когда я использую где на столбце JSON на Laravel вернуть пустую коллекцию - PullRequest
2 голосов
/ 22 апреля 2019

Когда я использую этот код в laravel для json, где

 $users = App\User::where('meta->Address->addressState','4');

Laravel возвращает пустую коллекцию

Illuminate\Database\Eloquent\Collection {#3909
   all: [],
}

Как я могу решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019
$users = App\User::where('meta->Address->addressState','4');

$data=$users->first();

Это будет работать, если вам нужны только одни данные из таблицы, у которых addressState равно 4, если вам нужно несколько данных, вы можете попробовать это

$data=$users->get();
0 голосов
/ 03 мая 2019

Иногда эта проблема возникает из-за типа столбца базы данных text или LongText Хотя должен быть столбец json

при использовании mariadb его столбец создания json в качестве длинного текста по умолчанию при запуске переноса

0 голосов
/ 22 апреля 2019

Попробуйте использовать whereJsonContains как

 $users = App\User::whereJsonContains('meta->Address->addressState', '4')->get();

или

Вы можете использовать

$users = DB::table('users')
           ->where('meta->Address->addressState', '4')
           ->get();

Я думаю, где тоже может работать правильно, вам нужно удалить цитату

$users = App\User::where('meta->Address->addressState', 4)->get();

или

$users = App\User::where('meta->Address->addressState', "'4'")->get();

зависит от того, как вы сохранили его в своей БД.

...