Есть ли простой способ управления отношениями "многие ко многим" в новой функции семян L4?
Один из способов - сделать семя для сводной таблицы, но я бы очень много работал.
Любые мысли о хорошем рабочем процессе для такого рода вещей?
Есть ли простой способ управления отношениями "многие ко многим" в новой функции семян L4?
Один из способов - сделать семя для сводной таблицы, но я бы очень много работал.
Любые мысли о хорошем рабочем процессе для такого рода вещей?
В последней версии 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');
Файлы семян Laravel - это обычные PHP-скрипты (за исключением того, что они должны возвращать массив). Вы можете запросить базу данных в файлах семян (используя Eloquent, Fluent builder или даже PDO).
Один из способов решения проблемы "многие-ко-многим" - это преднамеренно назвать ваши файлы семян так, чтобы сводная таблица была заполнена последней... Например, вы могли бы добавить числовое значение к имени файла (то есть 1_authors.php, 2_books.php, 3_authors_books.php и т.д.). Artisan сортирует имена файлов в алфавитном порядке перед их исполнением.
Я разместил небольшой учебник по поселку базы данных Laravel 4 - это должно вас заставить. Кроме того, вы можете обратиться к официальному документу посев.
Посещение - это простая информация, тестовые данные и статическая информация. Я бы не рекомендовал использовать его для обработки отношений. Лично я использую его только для 2 или 3 записей в таблице, чтобы помочь проверить мое приложение.
При разработке приложения подумайте о работе над областью ввода данных (admin) сначала, а затем с передней стороны. Таким образом, вы можете легко добавить тестовые данные.