Запрос построителя Laravel Query эквивалентен запросу SQL? - PullRequest
0 голосов
/ 16 ноября 2018

Мой запрос работает нормально, только проблема в этом предложении where.Скажите, пожалуйста, что запросит построитель запросов в Laravel, эквивалентный этому запросу

WHERE (interest_request.sender_id = 6 or interest_request.to_user_id = 6) 
AND interest_request.interest_status =2 
and profiles.profile_id not in (6)

Я использую следующий построитель запросов, но не работает

where('to_user_id',$my_profile_id)->orwhere
('sender_id',$my_profile_id)->where('interest_status','2')
->whereNotIn('profiles.profile_id', $my_profile_id) 

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я бы предположил, что в SQL будет следующее:

WHERE to_user_id = $my_profile_id  
OR sender_id = $my_profile_id
AND interest_status = 2
AND profiles.profile_id NOT IN ($my_profile_id)

Когда я использую операторы orwhere (), я использую функции обратного вызова:

where(function($query) {$query->something})
->orwhere(function($query) {$query->otherOptions})
0 голосов
/ 16 ноября 2018

В вашем конкретном случае вам придется использовать вложенное предложение where:

->where(function ($query) use ($my_profile_id) {
    $query->where('to_user_id', $my_profile_id)
        ->orWhere('sender_id', $my_profile_id);
})
->where('interest_status', 2)
->where('profile_id', '!=', $my_profile_id)

Также вам не нужно использовать запрос whereIn (или whereNotIn), еслиу вас есть только один идентификатор в списке.

...