#php #html #laravel
#php #HTML #laravel
Вопрос:
Я пытаюсь вернуть представление с 2 таблицами, orders
и order_menu
. Что я хочу сделать, так это отобразить, какие заказы заказал клиент на основе order_id на мой взгляд.
Вот таблица базы данных для заказов, а это таблица базы данных для order_menu.
Я пытался использовать join table в своем контроллере, но это не сработает. Вот мой контроллер:
public function show(Order $order)
{
$data = DB::table('order_menu')
->join('menus', 'menus.id', '=', 'order_menu.menu_id')
->join('orders', 'orders.id', '=', 'order_menu.order_id')
->select('orders.*', 'menus.name', 'order_menu.quantity')
->get();
return view('admin.order.detail')->with([
'order' => $order,
'data' => $data,
]);
}
Есть ли какие-либо решения для решения этой проблемы?
Комментарии:
1. Можете ли вы определить, но это не сработает , что не работает? в чем именно проблема?
2. @MKhalidJunaid он извлекает все данные
order_menu
, в то время как мне нужны только те данные, которые связаны с идентификатором вorder
таблице.
Ответ №1:
Вам просто нужно добавить фильтр для идентификатора заказа в свой запрос, я полагаю $order
, это экземпляр model и имеет данные заказа
$data = DB::table('order_menu')
->join('menus', 'menus.id', '=', 'order_menu.menu_id')
->join('orders', 'orders.id', '=', 'order_menu.order_id')
->select('orders.*', 'menus.name', 'order_menu.quantity')
->where('orders.id', $order->id)
->get();
Или, если у вас уже есть отношения в вашей модели, то с помощью eloquent вы можете запросить данные как
class Order extends Model
{
public function menus()
{
return $this->belongsToMany(Menu::class, 'order_menu ', 'order_id', 'menu_id')->withPivot('quantity');
}
}
class Menu extends Model
{
public function orders()
{
return $this->belongsToMany(Order::class, 'order_menu ', 'menu_id','order_id');
}
}
$data = Order::with('menus')->find($order->id);
Ответ №2:
public function show(Order $order)
{
$data = DB::table('orders*')
->join('order_menu*', 'order_menu.id', '=', 'orders.id')
->groupBy('orders.id')
->get();
return view('admin.order.detail')->with([
'data' => $data,
]);
}
Комментарии:
1. Я попробовал это, но я получаю сообщение об ошибке «Базовая таблица или представление не найдены: 1146 Таблица ‘mieac.orders*’ не существует»