Я бы хотел, чтобы продавец мог удалить / отредактировать товар, который он перечислил. Но если этот продукт был заказан клиентом, я бы хотел, чтобы заказ остался прежним и не изменился. Как я могу сделать это?
Прямо сейчас, когда я обновляю / удаляю, это влияет на заказы, представленные ранее.
Вот как я удаляю продукты прямо сейчас.
public function destroy($id)
{
$userId = Auth::user()->id;
$deleteData=product::where('seller_id', $userId)->findOrFail($id);
$deleteData->delete();
return redirect()->back();
}
Order.php
public function user()
{
return $this->belongsTo('App\User', 'seller_id');
}
public function products()
{
return $this->belongsToMany('App\Product')->withPivot('quantity','total','Subtotal');
}
public function orderItems()
{
return $this->hasMany('App\OrderProduct');
}
Edit:
Controller for seller orders
// Seller Orders
public function viewOrders(User $user)
{
//$seller = Auth::user();
$totals = OrderProduct::select("seller_id", DB::Raw("SUM(Subtotal) AS total"), 'order_id')
->where('seller_id', '=', \Auth::user()->id)
->groupBy('seller_id')
->groupBy('order_id')
->get();
$orders = Order::whereHas('orderItems.product', function ($query) {
$query->where('seller_id', '=', \Auth::user()->id);
})->orderBy('id', 'DESC')->withTrashed()->get();
return view('orders', ['orders'=> $orders, 'total'=> $totals] );
}
Шаблон лезвия продавца
@foreach ($order->orderItems as $item)
@if($item->product->user_id == Auth::user()->id)
<td>{{ $item->name }}</td>
<td>{{ $item->price }}</td>
@else
@endif
@endforeach
OrderProduct.php
class OrderProduct extends Model
{
use SoftDeletes;
protected $table = 'order_product';
protected $fillable = ['order_id', 'seller_id','product_id', 'quantity','Subtotal','total','name','price'];
public function product()
{
return $this->belongsTo('App\Product');
}