Протестируйте данные JSON из базы данных и получите столбец

У меня в базе данных есть столбец, в котором хранится json, и я хотел бы восстановить значение определенного объекта моего json, чтобы проверить его.

Итак, мой столбец «JSON» содержит это

{
"type":"index",
"data ":{"index":2}
}

И если я получу 2, мне нужно получить этот столбец, содержащий индекс 2, чтобы удалить его. Я пробовал это:



$column = Table::where('JSON["data"]["index"]','=', '2' )
                ->first();
 Table::dropColumn($column);


Но это не работает, потому что я не могу получить индекс

помогает ли приведение столбца к массиву? laravel.com/docs/5.8/eloquent-mutators#приведение атрибутов (посмотрите немного дальше для JSON -> приведение массива)

Vlad Visinescu 10.04.2019 14:09

Вы можете попробовать что-то вроде этого: Table::where('json_columnname','like', '%"data ":{"index":2}%' ) ->first(); Или установить пакет, который добавляет поддержку запросов json, например, ответ здесь stackoverflow.com/questions/42425667/…

Rob Biermann 10.04.2019 14:10

@RobBiermann попробовал это, но результат нулевой!

Gavroch 10.04.2019 14:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
226
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Просто используйте SQL

->where('JSON', 'like', '%"index": "2"%');
   Since you gave JSON value as a string, it was unable to get the index value.                                                                                  
   Can you please try like below,                                        
       $column = Table::whereRaw(JSON["data"]["index"], '=', '2' )
                 ->first();                       
                 Table::dropColumn($column);

Я пробовал это, но это говорит мне о синтаксической ошибке, мне не нравится помещать JSON так

Gavroch 10.04.2019 14:24
Ответ принят как подходящий

Если вы используете последнюю версию laravel, то

$column = Table::where('JSON->data->index','2')->first();

Должно сработать.

Вы можете обратиться к официальной документации laravel для json, где пункт здесь.

SQLSTATE [42703]: неопределенный столбец: 7 ОШИБКА: столбец «данные» не существует

Gavroch 10.04.2019 14:27

Другие вопросы по теме