public function testHasBehaviors() { $behavior1 = $this->getBehaviorMock('Foo'); $behavior2 = $this->getBehaviorMock('Bar'); $behavior3 = $this->getBehaviorMock('Baz'); $table = new Table(); $table->addBehavior($behavior1); $table->addBehavior($behavior2); $table->addBehavior($behavior3); $this->assertCount(3, $table->getBehaviors()); $this->assertTrue($table->hasBehavior('Foo')); $this->assertTrue($table->hasBehavior('Bar')); $this->assertTrue($table->hasBehavior('Baz')); $this->assertFalse($table->hasBehavior('Bab')); $this->assertSame($behavior1, $table->getBehavior('Foo')); $this->assertSame($behavior2, $table->getBehavior('Bar')); $this->assertSame($behavior3, $table->getBehavior('Baz')); }
/** * Returns the DQL to create a new trigger. * * @param Table $table * * @return string */ protected function createTriggerDDL(Table $table) { /** @var CompositeNumberRangeBehavior $behavior */ $behavior = $table->getBehavior(self::BEHAVIOR_NAME); $foreignTableName = $behavior->getForeignTable(); $triggerName = $this->getTriggerName($table); $tableName = $table->getName(); $sql = "\nDELIMITER \$;\n\nCREATE TRIGGER {$triggerName}\nBEFORE INSERT ON {$tableName}\nFOR EACH ROW\nBEGIN\n INSERT INTO {$foreignTableName}_sequence (\n table_name, {$foreignTableName}_id, {$foreignTableName}_max_sequence_id\n ) VALUES (\n '{$tableName}', NEW.{$foreignTableName}_id, LAST_INSERT_ID(1)\n ) ON DUPLICATE KEY\n UPDATE {$foreignTableName}_max_sequence_id = LAST_INSERT_ID({$foreignTableName}_max_sequence_id +1);\n\n SET NEW.{$foreignTableName}_{$tableName}_id = LAST_INSERT_ID();\nEND\n\nDELIMITER ;\n"; return $sql; }