от
Я использую где с несколькими whereHas (), и я не получаю ожидаемый результат. Это мой код
public function getCommunityScoreByUser($user,$category_id) {
      $question_ids = $user

Ожидаемый результат

Я хочу выбрать специальности, в которых есть вопросы или тематические исследования, и они должны соответствовать критериям 

Фактический результат

$specialities
содержит либо вопросы, либо тематические исследования, но это не проверка
category_id
. Вместо этого он выбирает
$specialities
со всеми категориями. Но если я удаляю один из whereHas, то он работает отлично. Пожалуйста, помогите мне найти решение.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Результат, который вы получаете, связан с
orWhereHas
. С вашим текущим заявлением, он получит все специальности, где у него есть вопросы ИЛИ, где у него есть тематические исследования, где активно и т. Д. И т. Д. То, что вы хотите сделать, это ограничить
or
только инструкциями
whereHas
. Для этого вы можете сделать следующее:
$specialities = $this

То, что это будет делать, это просто обернуть whereHas
в их собственное, где они обрабатываются независимо.     
0 голосов
от
Использование
orWhereHas
, вероятно, ведет себя не так, как вы ожидаете. В вашем случае, если


Это правда, тогда это будет разрешено. Не нужно будет проверять все остальные фильтры.

Если вы хотите проверить один или другой whereHas
, вам необходимо добавить их в их собственный
where
, чтобы «ограничить»
or
.

    
...