【发布时间】:2020-10-24 11:02:01
【问题描述】:
最近几天,我一直在用播种机把头靠在墙上。我似乎无法掌握它。
关系很简单:
一个品牌有很多产品,每个产品都属于一个品牌。
一个类别有许多产品,每个产品都属于一个类别。
鉴于此,我在开始时创建了 5 个类别,以便以后可以随机检索一个。
我还创建了 10 个品牌,我为每个品牌创建了 50 种产品,并让它们属于那个品牌。然后我创建与产品和类别的关系,为每个产品检索一个随机类别。
我收到此错误:
PDOException::("SQLSTATE[HY000]: General error: 1364 Field 'brand_id' doesn't have a default value")
我不明白为什么会出现此错误,因为我是在创建产品之前创建关系:$brand->products()->saveMany(factory(App\Product::class, 50).
public function run()
{
$users = factory(\App\User::class, 1000)->create();
$categories = factory(\App\Category::class, 5)->create();
factory(App\Brand::class, 10)->create()->each(function ($brand) {
$brand->products()->saveMany(factory(App\Product::class, 50)->make()->each(function ($product) use ($brand) {
$product->category()->associate($this->getRandomCategory());
$product->save();
}));
});
}
private function getRandomCategory() {
return \App\Category::all()->random();
}
private function getRandomUser() {
return \App\User::all()->random();
}
我不知道我是否通过播种做了很多事情,但这对我来说似乎很复杂。也许我在使用工厂时采取了错误的方法。有没有很好的播种教程? 提前致谢!
【问题讨论】:
标签: laravel seed seeding laravel-seeding