#laravel #eloquent #eloquent-relationship
#laravel #красноречивый #красноречивое отношение
Вопрос:
Кто-нибудь может помочь, у меня закончились идеи.
У меня есть этот код:
$item = ItemsBrandOitb::select('ItmsGrpCod')->where('Brand', '=', $brand)->first();
return ItemsOitm::where('Country', $country)
->where('OnHand', '>', 0)
->where('ItmsGrpCod','=', $item->ItmsGrpCod)
->with([
'price' => function($q) use ($country){
return $q->where('Country', $country);
},
'stock'=> function($q) use ($country){
return $q->where('Country', $country);
},
'brand' => function($q) use ($brand){
return $q->whereHas('Brand', '=', $brand);
}
]
)->groupBy('U_GeralRef')->orderBy('ColectionDate', 'desc')->get();
Кто-нибудь знает, как поместить этот запрос:
$item = ItemsBrandOitb::select('ItmsGrpCod')->where('Brand', '=', $brand)->first();
//here:
->where('ItmsGrpCod','=', $item->ItmsGrpCod)
Значит, у меня может быть только один запрос к базе данных?
Спасибо
Комментарии:
1. вы можете использовать вложенный запрос
2. если вы разделяете структуру базы данных, я напишу запрос объединения
Ответ №1:
Попробуйте что-то вроде этого:
return ItemsOitm::where('Country', $country)
->where('OnHand', '>', 0)
->where('ItmsGrpCod', function ($query) use ($brand) {
$query->from('TABLE_NAME')
->where('Brand', '=', $brand);
})
->with([
'price' => function( $q) use ($country){
return $q->where('Country', $country);
},
'stock'= > function( $q) use ($country){
return $q->where('Country', $country);
},
'brand' => function( $q) use ($brand){
return $q->whereHas('Brand', '=', $brand);
}
]
)->groupBy('U_GeralRef')->orderBy('ColectionDate', 'desc')->get();
Комментарии:
1. Это почти то, что мне нужно: но мне нужно иметь select в подзапросе, и когда я это делаю, Laravel выдает ошибку
Ответ №2:
Прибил его:
return ItemsOitm::where('Country', $country)
->where('OnHand', '>', 0)
->where('ItmsGrpCod', function ($query) use ($brand) {
$query->select('ItmsGrpCod')->from('items_brand_oitbs')
->where('Brand', $brand);
})
->with([
'price' => function($q) use ($country){
return $q->where('Country', $country);
},
'stock'=> function($q) use ($country){
return $q->where('Country', $country);
}
]
)->groupBy('U_GeralRef')->orderBy('ColectionDate', 'desc')->get();
Пришлось удалить последнюю нетерпеливую загрузку (бренд) Мне это не нужно, потому что я уже получаю значение в подзапросе
Спасибо всем, кто помог. Приветствия!