Как запустить сеялку для нескольких связанных таблиц одновременно на Laravel? - PullRequest
1 голос
/ 08 июня 2019

Я создаю 3 таблицы, которые связаны друг с другом следующим образом:

Template hasOne Attribute


Template hasOne Link

Я хочу заполнить таблицу атрибутов и ссылок с помощью шаблона Seeder.Я попытался вставить две функции внутри фабрики шаблонов, чтобы запустить ее одновременно, но вторая функция не работает, только первая функция работает нормально.

Я хочу, чтобы она запускалась сразу.

Здесьмой код на заводе:

factory(App\Models\Template\Eloquent\TemplateModel::class, 10)->create()->each(
    function ($template) {
        $template->links()->save(
            factory(App\Models\Template\Eloquent\TemplatelinkModel::class)->make()
        );
    },
    function ($template) {
        $template->attributes()->save(
            factory(App\Models\Template\Eloquent\TemplateattributeModel::class)->make()
        );
    }
);

Как это сделать?Пожалуйста, какое-нибудь тело поможет мне?Спасибо.

1 Ответ

1 голос
/ 08 июня 2019

Вы должны использовать только одну функцию обратного вызова в качестве параметра для функции Illuminate \ Support \ Collection-> each ().В вашем случае использование обеих операций сохранения внутри одной и той же функции, отправленной в качестве обратного вызова к каждому (), поможет.

factory(App\Models\Template\Eloquent\TemplateModel::class, 10)->create()->each(
    function ($template) {
        $template->links()->save(
            factory(App\Models\Template\Eloquent\TemplatelinkModel::class)->make()
        );
        $template->attributes()->save(
            factory(App\Models\Template\Eloquent\TemplateattributeModel::class)->make()
        );
    }
);

Для получения дополнительной информации об использовании каждой () и других функций коллекции см.https://laravel.com/docs/5.8/collections.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...