Я сделал глобальную область, чтобы получать данные только со статусом столбца = 1. Это работало нормально. но я столкнулся с этой проблемой в своем коде и не знал, как решить эту проблему:
"message": "SQLSTATE [23000]: нарушение ограничения целостности: 1052 Столбец 'status', где предложение неоднозначно (SQL: выберите items
. *, item_orders
. order_id
как pivot_order_id
, item_orders
. item_id
как pivot_item_id
, item_orders
. quantity
как pivot_quantity
с items
внутреннее соединение item_orders
на items
. id
= item_orders
. item_id
, где item_orders
. order_id
= 1 и status
= 1 заказ на id
des c ) ",
Это мой код:
$order = Order::find($id);
if (is_null($order) || empty($order))
return ResponseHelper::customizedResponse(false,'4500','No Order is available');
$user =$order->user_id;
$place = Place::where('id',$order->place_id)->first();
$orderItems = ItemOrder::where('order_id',$order->id)->get()->toArray();
$orderArray = [];
$itemQ = [];
foreach ($orderItems as $orderItem)
{
$orderArray[] =$orderItem['item_id'];
$itemQ[] = $orderItem['quantity'];
}
$items = Item::whereIn('id',$orderArray)->get();
$itemP = [];
foreach ($items as $item)
{
$itemP[]= $item->price;
}
$totalItem = array_map(function ($price,$quantity){
return $price * $quantity;
},$itemP , $itemQ );
$total = array_sum($totalItem);
$customer = User::find($user);
$address = Address::where('user_id',$customer->id)->first();
return response()->json(['order'=>$order,'place'=>$place,'items'=>$items,'customer'=>$customer,'address'=>$address,'total'=>$total]);
Глобальная область действия:
public function apply(Builder $builder, Model $model)
{
if (str_contains(request()->route()->uri(),'api')) {
$builder->where('status', '=', 1);
}
}