Я пытаюсь использовать предложение whereIn
, но получаю редкое поведение.
Это мои отношения:
return $this->belongsToMany('App\Models\Role', 'system_users_roles', 'user_id', 'role_id')
->where(function ($query) {
$query->where(function ($querypermissions) {
$querypermissions->whereNotNull('service_id')
->whereHas('permissions', function ($q) {
$q->whereIn('app_id', $this->apps->pluck('id'));
});
})
->orWhereNULL('service_id');
});
Этот код возвращает несколько строк, но одна отсутствует (в данном случае та, которая мне нужна).
Если я изменю эту строку:
$q->whereIn('app_id', $this->apps->pluck('id'));
К этому:
$q->whereIn('app_id', [0 => 1]);
Я получаю правильный результат. Я получаю первый результат с нужной мне строкой.
Я думал, что это проблема $this->apps->pluck('id')
, потому что он может быть пустым, но это не так.
Я пробовал с $this->apps
, с $this->apps->pluck('id')->toArray()
, но ничего не получается.
Может кто-нибудь сказать мне, что не так!?
Дополнительная информация: когда я показываю запрос sql (с ->toSql()
), он имеет:
bla bla bla...
and 0 = 1))
bla bla bla...
например сказать массив неверен.
Но, как я уже говорил, я пробовал разными способами создать массив со значениями в whereIn, но ничего не работает.
Я прочитал этот ответ, но мне нужна дополнительная помощь.
Благодарю вас!
dd($this->apps->pluck('id'))
перед оператором return в ваших отношениях, каков точный результат? - person Salim Djerbouh   schedule 23.09.2019Collection {#534 ▼ #items: array:2 [▼ 0 => 1 1 => 2 ] }
- person SeiyaJapon   schedule 23.09.2019$q->whereIn('app_id', [1, 2]);
, это даст желаемые результаты? - person Salim Djerbouh   schedule 23.09.2019