Кто-нибудь что-нибудь делал с whereJsonContains?
У меня это работает с ->where('options->language', 'en')
, но когда я пытаюсь ->whereJsonContains('options->languages', ['en', 'de'])
, это не работает для меня.
Это то, что я пытаюсь
$array = ['150486141', '141301210'];
$accountsAlreadyConnected = auth()->user()->accounts()->whereJsonContains('settings->account_id', $array)->get()
, который выводит
select * from `accounts` where `accounts`.`user_id` = 9 and `accounts`.`user_id` is not null and json_contains(`settings`, '[\"150486141\",\"141301210\"]', '$."account_id"')
Но это не дает мне результатов, которых я ожидаю.
Если я цепью, как это
$accountsAlreadyConnected = auth()->user()->accounts()
->whereJsonContains('settings->account_id', '150486141')
->orWhereJsonContains('settings->account_id', '141301210')
->get());
Тогда это дает мне ожидаемые результаты.
Я использую Laravel 7.2.0 с MySQL 5.7 .25
Заранее спасибо,
Джеймс
РЕДАКТИРОВАТЬ
В конце концов, я сделал это
$accountsAlreadyConnected = auth()->user()->accounts()->where(function($query) use($availableAccounts) {
foreach($availableAccounts as $item) {
$query->orWhereJsonContains('settings->account_id',$item['id']);
}
})->select('settings->account_id as account_id')->get();