我使用的是Laravel 5.5,我无法使用以下查询删除通知。它给出了以下错误:
SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 MariaDB服务器版本,用于在#"> video_id = 89''> video_id = 89'附近使用正确的语法 在第1行(SQL:从
notifications
删除,其中data-> video_id = 89)。
DB::table('notifications')->WhereRaw("data->video_id=$video_id")->delete();
答案 0 :(得分:0)
为什么使用数据> video_id
试试
WhereRaw("video_id=$video_id")
答案 1 :(得分:0)
->
运算符是MySQL中JSON_EXTRACT()
函数的简写。不幸的是,MariaDB不支持这种简写语法。
MariaDB确实在10.2.3中引入了JSON_ *函数,但我不知道它们是否可以在查询中的列上工作。你能做的最好的事情就是尝试。您需要重写查询以明确使用JSON_EXTRACT()
函数:
DB::table('notifications')
->whereRaw('JSON_EXTRACT(data, "$.video_id") = ?', [$video_id])
->delete();
如果这不起作用,那么您需要从MariaDB切换到MySQL,或者您需要将查询重写为简单的字符串搜索(使用LIKE
运算符)。