【发布时间】:2020-12-14 02:59:28
【问题描述】:
我有三张桌子,Order、OrderItem 和 GoldSilver。 OrderItem 具有来自 Order 表的 order_id,OrderItem 具有 gold_silver_id。
所以,在删除Order 时,我想删除相关的OrderItem 和GoldSilver。我可以通过 Laravel Eloquent 关系删除 OrderItem,但是如何删除 GoldSilver。
这是我的模型:
订单.php
public function orderItem()
{
return $this->hasMany(OrderItem::class);
}
OrderItem.php
public function order()
{
return $this->belongsTo(Order::class);
}
public function goldSilver()
{
return $this->belongsTo(GoldSilver::class);
}
GoldSilver.php
public function orderItem()
{
return $this->hasOne(OrderItem::class);
}
在我的控制器中删除我正在做的事情:
public function destroy($id)
{
$order = Order::find($id);
$order->orderItem;
$dltorder = $order->orderItem()->delete();
if($dltorder){
return response()->json([
'status'=>'Success',
'message'=>'Order deleted'
],200);
}
}
我该怎么做?帮助表示赞赏。谢谢。
【问题讨论】:
-
创建一个新的迁移并在其中定义外键约束,您不需要执行额外的代码来从其他表中删除项目。
-
我不想在删除时使用级联@NaveedAli
-
你必须遍历 orderItem 关系
-
简单的方法:你有 $order ,然后 $order_item = $order->orderItem;然后 loof 订单项和 delete$order_item->goldSilver()->delete();然后删除orderItem $order->orderItem()->delete;
-
你需要在这里添加静态功能启动[检查这个](stackoverflow.com/questions/14174070/…)
标签: laravel eloquent model relation eloquent-relationship