Я пытаюсь выполнить запрос по пути отношений.В удобочитаемом формате:
Get collection of orders where $order->orderItem->product->sku is LIKE 'red-jumper';
Я могу создать это вручную, используя запрос whereHas следующим образом:
$query->whereHas('orderItems', function($query) use($request){
$query->whereHas('product', function ($query) use($request){
$query->where('sku', 'LIKE', '%' . $request->search . '%');
});
});
Однако, если я хочу, чтобы это было динамическим и не знал суммууровней в отношениях, как я могу это сделать?
Я бы искал что-то вроде:
$paths = [
0 => 'orderItems'
1 => 'product,
2 => 'sku'
];
$query->whereHas($paths[0], function($query) use($request, $paths){
$query->whereHas($paths[1], function ($query) use($request, $paths){
$query->whereHas($paths[2], function ($query) use($request, $paths) {
$query->whereHas($paths[3], function ($query) use ($request, $paths) {
$query->where('sku', 'LIKE', '%' . $request->search . '%');
});
});
});
});
Может быть, есть лучший способ сделать все это вместе?