Задать вопрос
@Gleb316
Учиться и не бросать на половине.

Поиск json данных в бд Yii2?

Есть несколько колонок в бд формата json и пытаюсь сделать поиск " есть ли это значение в какойнибуть ячейке". Нашел несколько ответов но не один не работает:
Имею колонку servers и значения [83,68,24,887,883]
Ответ1
User::find()
   ->andWhere(['json_column->email' => 'mail@example.com'])
   ->one();

Пробовал подставлять свои данные но ничего хорошего невышло.
Ответ2
use yii\db\Expression;
$expression = new Expression('JSON_CONTAINS(fied, value)');
$now = (new \yii\db\Query)->select($expression);

С этим похожая ситуация, мне надо проверить есть ли в таблице SERVERS допустим значение 80 которое в формате json, не знаете как можно это сделать ?
  • Вопрос задан
  • 2448 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вам надо бы почитать про sql, советую тут:
https://www.w3schools.com/PhP/php_mysql_intro.asp

>->andWhere(['json_column->email' => 'mail@example.com'])

это строка, если грубо, ищет в базе данных столбец с названием 'json_column->email', не думаю, что у Вас такой есть. И в нем значение точно совпадающее с 'mail@example.com'. Как данный запрос связан с json вообще не понятно.

Все данные в базе, по которым нужно что-то искать, сортировать и т.д. не должны храниться в виде json. Они должны быть в разных ячейках. В вашем случае будет 2 таблицы и связь hasMany.
В случае с json может помочь только LIKE и то это костыль и вряд ли будет нормально работать. Для верности придется еще в php проверку писать.
Можете выбрать все и потом в цикле вычленять нужное используя in_array
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы