Проблема с сеялкой между 3 объектами - PullRequest
0 голосов
/ 19 сентября 2019

У меня проблема с новостями сеялки.Он имеет отношения между двумя объектами.Результат команды php artisan db: seed выглядит следующим образом:

Illuminate \ Database \ QueryException: SQLSTATE [HY000]: общая ошибка: 1364 Поле 'user_id' не имеет значения по умолчанию(SQL: вставьте в значения news (title, b ody, author, created_at, updated_at) (Dr., Nisi Quia и Provent.adipis ci. Eum aut porro vulptatem est sit numquam ex a., Джания Лоу, 2019-09-19 06: 5 4:25, 2019-09-19 06:54:25))

У меня есть 3 объекта:

User                          News                             Category
id                             id                                id                                              
                              user_id                         
                              category_id                                                                    

Мой NewsTableSeeder следующий:

public function run()
    {
        factory(News::class, 20)->create()->each(function ($news) {
            $news->category()->save(factory(NewsCategory::class)->make());
            $news->writtenBy()->save(factory(User::class)->make());
        });
    }

Мой класс Новости следующий

class News extends Model
{
    protected $table = 'news';
    protected $fillable = ['title', 'body', 'author', 'created_at', 'update_at'];

    /**
     * WrittenBy belongs to User.
     */
    public function writtenBy()
    {
        return $this->hasOne(User::class);
    }

    /**
     * Category belongs to User.
     */
    public function category()
    {
        return $this->hasOne(NewsCategory::class);
    }
}

Не могли бы вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 19 сентября 2019

Отметьте,

public function run()
    {
 DB::statement('SET FOREIGN_KEY_CHECKS=0;');
        factory(News::class, 20)->create()->each(function ($news) {
            $news->category()->save(factory(NewsCategory::class)->make());
            $news->writtenBy()->save(factory(User::class)->make());
        });
 DB::statement('SET FOREIGN_KEY_CHECKS=1;');
    }
...