3 回答
TA贡献1829条经验 获得超7个赞
我假设这$request->order_detail是一个由许多 组成的数组order_details。
问题insert是您没有使用 Eloquent,而是使用查询生成器,因此 Laravel 无法自行填充order_id,如果您使用createMany它,它将能够这样做:
$order = Order::create($request->all());
$order->order_detail()->createMany($request->order_detail);
来自文档:
您可以使用 createMany 方法创建多个相关模型:
$post = App\Post::find(1);
$post->comments()->createMany([
[
'message' => 'A new comment.',
],
[
'message' => 'Another new comment.',
],
]);
TA贡献1906条经验 获得超3个赞
因为你的$request->order_detail不会包含 order_id。您可以从新创建的 $order 中获取它。
$order = Order::create($request->all()); // upon create, you can access the order_id by doing $order->id
$orderDetails = [];
foreach($request->order_detail as $details) {
$orderDetails[] = [
array_merge($details, ['order_id' => $order->id]);
];
}
$order->order_detail()->insert($orderDetails);
TA贡献1801条经验 获得超15个赞
听起来像是数据库问题。该列order_id
具有 AUTO_INCRMENT,这意味着它将在插入时生成一个数字。
尝试使用 phpMyAdmin 插入以查看 AUTO_INCRMENT 是否有效。或者使用 SHOW TABLE STATUS 并检查 AUTO_INCRMENT。
- 3 回答
- 0 关注
- 141 浏览
添加回答
举报