用数据播种Laravel多对多表

时间:2018-11-12 11:33:57

标签: php laravel laravel-5

我有3张桌子;订单,产品和order_product。我正在尝试使用Seeder类播种order_product数据透视表。

这就是我的代码中的内容;

$productArray = \Illuminate\Support\Facades\DB::table('products')->pluck('id')->toArray();

factory(App\Order::class, 60)->create()->each(function ($order) use ($productArray)  {
  $randomPickings = mt_rand(1, 4);
  $order->products()->sync(array_rand($productArray, $randomPickings));
});

我想附加$productArray中的产品ID,以便在播种后一个订单可以附加1,2、3、4或5个产品。当前,运行播种机时出现此错误。

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or 
update a child row: a foreign key constraint fails 
(`foo`.`order_product`, CONSTRAINT 
`order_product_product_id_foreign` FOREIGN KEY (`product_id`) 
REFERENCES `products` (`id`) ON DELETE CASCADE) (SQL: insert into 
`order_product` (`order_id`, `product_id`) values (2, 0))

没有ID为0的产品。我猜它是在选择索引而不是值。如何获得选择/选择的值呢?谢谢。

0 个答案:

没有答案