Получить таблицу БД из массива json с помощью Laravel - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующая запись в моей базе данных, где я должен получить все записи, содержащие любую из записей.

Запись таблицы содержит: $ record_ids = ["123", "234", "111"]

Пытаюсь найти его с помощью Laravel следующим образом:

$records = DB::table('records_table')
  ->where('id', $id)
  ->whereRaw('JSON_CONTAINS(record_id, ?)', $record_ids)
  ->pluck('records');

Я также пытался найти похожие решения:

->whereIn('record_id', $record_ids)

Я использую Laravel5.5 и Mysql.

Обновление: работает, когда я «вручную» добавляю его следующим образом:

->whereIn('record_id', ["123","234","111"])

Но при извлечении массива из базы данных он не работает

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Типы должны совпадать (целое или строковое), а искомое значение должно быть закодировано в JSON:

$search = json_encode(array_map('intval', $record_ids));

$records = DB::table('records_table')
    ->where('id', $id)
    ->whereRaw('JSON_CONTAINS(record_id, ?)', $search)
    ->pluck('records');

В Laravel 5.6 вы можете использовать whereJsonContains():

->whereJsonContains('record_id', array_map('intval', $record_ids));
0 голосов
/ 28 сентября 2018

Я думаю, что вы хотите использовать здесь:

->whereIn('record_id', json_decode($json, true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...