Проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '>video_id=89'
Я использую Laravel 5.5 и не могу удалить уведомление, используя приведенный ниже запрос. Это дает следующую ошибку:
SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '>video_id=89' в строке 1 (SQL: удалить из
notifications
где data->video_id=89).
DB::table('notifications')->WhereRaw("data->video_id=$video_id")->delete();
2 ответа
Почему вы используете data->video_id
Просто попробуйте с
WhereRaw("video_id=$video_id")
->
оператор является сокращением для JSON_EXTRACT()
функция в MySQL. К сожалению, MariaDB не поддерживает этот сокращенный синтаксис.
MariaDB представила функции JSON_* в 10.2.3, но я не знаю, будут ли они работать со столбцами в запросе. Лучшее, что вы можете сделать, это попробовать. Вам нужно будет переписать ваш запрос, чтобы явно использовать JSON_EXTRACT()
функция:
DB::table('notifications')
->whereRaw('JSON_EXTRACT(data, "$.video_id") = ?', [$video_id])
->delete();
Если это не сработает, вам нужно будет либо переключиться с MariaDB на MySQL, либо вам нужно переписать ваш запрос как простой поиск строки (используя LIKE
оператор).