#laravel
Вопрос:
$data['orders'] = OrderReturn::with(['order_detail.products','order_detail.products.Companies'])
->whereHas('order_detail',function($query){
$query->where('status','lifted');
})
->where('customer_id',hashids_decode($id))
->where('status','lifted')
->get();
Где здесь не работает, но если я использую, где внутри с этим работает так
$data['orders']=OrderReturn::with(['order_detail.products','order_detail.products.Companies','order_detail'=>function($query){
$query->where('status','lifted');
}])
->where('customer_id',hashids_decode($id))
->where('status','lifted')
->get();
в чем проблема с первым?
Комментарии:
1. Вы ищете внутреннее соединение?
2. Что значит «не работает»? Слишком много результатов? Слишком мало результатов? Ошибка? Обратите внимание, что 2-й отличается от 1-го тем, что 2-й фильтрует отношения на основе условия (это означает, что вы получаете меньше связанных моделей), в то время как первый фильтрует первую модель на основе условия отношений (это означает, что вы потенциально получаете меньше
OrderReturn
моделей)3.
order_detail
это отношения. вы не можете использоватьwhereHas
снаружиwith
. Это логика4. Я просто хочу установить условие, если статус order_detail отменен, а затем извлеките только запись.