Я пытаюсь использовать предложение 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...
как сказать массив неверен .
Но, как я уже говорил, я пытался разными способами создать массив со значениями где в , но ничего не работает.
Я прочитал этот ответ , но мне нужна дополнительная помощь.
Спасибо!