Ответ 1
В последней версии Laravel 4 вы определяете порядок запуска всех сценариев сеялки в методе "run" класса DatabaseSeeder.
public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
$this->call('PrimaryTableOneSeeder');
$this->command->info('The first primary table has been seeded!');
$this->call('PrimaryTableTwoSeeder');
$this->command->info('The second primary table has been seeded!');
$this->call('PivotTableSeeder');
$this->command->info('The pivot table has been seeded!');
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
Вы заметите, что я отключил ограничения внешнего ключа до и после запуска всего моего посева. Это может быть плохой практикой, но это единственный способ, с помощью которого я могу использовать функцию truncate для повторного набора количества id для каждой таблицы. Если вы следуете руководству по вставке связанных моделей, эта практика может оказаться ненужной.
class PrimaryTableOneSeeder extends Seeder {
public function run()
{
DB::table('primaryone')->truncate();
Primaryone::create(array(
'field' => 'value',
'created_at' => new DateTime,
'updated_at' => new DateTime
));
}
Чтобы использовать массовое назначение как я это делаю в моем примере, и, как это делает последняя версия документации, вам нужно указать либо некоторые защищенные или заполняемые столбцы для модели. Для этого просто добавьте свойство в вашу модель следующим образом:
class Primaryone extends Eloquent {
protected $guarded = array('id');