I have three tables, Order
, OrderItem
and GoldSilver
. OrderItem
has an order_id
from Order
table and OrderItem
has gold_silver_id
.
So, Upon deleting Order
I want to delete related OrderItem
and GoldSilver
. I can delete OrderItem through Laravel Eloquent relationship, but how can I delete GoldSilver too.
Here is my model:
Order.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);
}
In my controller for delete I am doing:
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);
}
}
How can I do so? Helpis appreciated. Thank you.
you can do something like below in destroy method:
public function destroy($id)
{
//you have $order id, find the order and then the relation with orderItems
$order = Order::find($id);
foreach($order->orderItem as $orderItem){
$orderItem->goldSilver()->delete();
}
$dltorder = $order->orderItem()->delete();
if($dltorder){
return response()->json([
'status'=>'Success',
'message'=>'Order deleted'
],200);
}
}