Мой whereJson содержит не работает (Laravel 5.8) - PullRequest
1 голос
/ 13 января 2020

У меня проблема с моим laravel запросом.

Теперь я использую запрос следующим образом:

$courses = Course::whereJsonContains('schedule->day', 1)->get();

Это не работает.

Я использую postgreSql 9.6, и моя база данных и необработанный запрос выглядят так:

http://sqlfiddle.com/#! 17 / 88fd2 / 1/0

I хочу выбрать класс, в котором есть расписание на день = 1

Ответы [ 3 ]

1 голос
/ 13 января 2020

Если вы определите столбец как schedule->day, MySQL предполагает, что это массив целых чисел. В вашем случае это массив объектов, поэтому вам нужно нацелиться на родительский массив и добавить имя свойства, которое вы ищете во втором аргументе.

Примерно так:

$courses = Course::whereJsonContains('schedule', ['day' => 1])->get();
0 голосов
/ 13 января 2020

Я решил с

$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();

0 голосов
/ 13 января 2020

Попробуйте это

whereRaw("JSON_CONTAINS(schedule->day, '[1]' )")->get();

РЕДАКТИРОВАТЬ

whereJsonContains('schedule', ['day' => '1'])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...