chazovs
@chazovs
Корпорация Центр

Как создать фабрику сидов со связанными моделями в laravel?

Не могу понять, почему у меня не получается вот такая фабрика:
factory(Company::class, 10)->create()->each(
            function (Company $company) {
                $company->chart()->save(factory(Chart::class)->make());
            }
        );

Company связана с Chart вот так:
public function chart()
    {
        return $this->hasOne(\App\Models\Chart::class);
    }

А Chart с Company связана вот так:
public function company()
    {
        return $this->belongsTo(\App\Models\Company::class);
    }

Я получаю такую ошибку:
Illuminate\Database\QueryException  : SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`db`.`companies`, CONSTRAINT `companies_chart_id_foreign` FOREIGN KEY (`chart_id`) REFERENCES `charts` (`id`)) (SQL: insert into `companies` (`name`, `admin_id`, `created_at`, `updated_at`, `chart_id`, `logo`) values (eveniet, 5, 1974-12-23 08:42:11, 1985-12-16 16:29:54, 9, perferendis))

Странно.. я думал, он сначала создаст мне chart, потом передаст айдишник в компанию и потом сохранить компанию... Но так не работает. Как это правильно написать?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
Сначала сохраните Chart, и только после этого добавляйте его в Company. Т.е. в save должна уходить Chart сохраненная модель.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы