Laravel 4: Работа с отношениями в семенах - программирование

Laravel 4: Работа с отношениями в семенах

Есть ли простой способ управления отношениями "многие ко многим" в новой функции семян L4?

Один из способов - сделать семя для сводной таблицы, но я бы очень много работал.

Любые мысли о хорошем рабочем процессе для такого рода вещей?

4b9b3361

Ответ 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');

Ответ 2

Файлы семян Laravel - это обычные PHP-скрипты (за исключением того, что они должны возвращать массив). Вы можете запросить базу данных в файлах семян (используя Eloquent, Fluent builder или даже PDO).

Один из способов решения проблемы "многие-ко-многим" - это преднамеренно назвать ваши файлы семян так, чтобы сводная таблица была заполнена последней... Например, вы могли бы добавить числовое значение к имени файла (то есть 1_authors.php, 2_books.php, 3_authors_books.php и т.д.). Artisan сортирует имена файлов в алфавитном порядке перед их исполнением.

Я разместил небольшой учебник по поселку базы данных Laravel 4 - это должно вас заставить. Кроме того, вы можете обратиться к официальному документу посев.

Ответ 3

Посещение - это простая информация, тестовые данные и статическая информация. Я бы не рекомендовал использовать его для обработки отношений. Лично я использую его только для 2 или 3 записей в таблице, чтобы помочь проверить мое приложение.

При разработке приложения подумайте о работе над областью ввода данных (admin) сначала, а затем с передней стороны. Таким образом, вы можете легко добавить тестовые данные.