我正在尝试查找今天创建的所有记录,并以列functional_id
的1开头。
我得到以下语法错误:
SQLSTATE[42000]:语法错误或访问违规:1064您的SQL语法有错误;查看与MariaDB服务器版本对应的手册,了解在第1行"WHERE functional_id LIKE"1%"附近使用的正确语法(SQL:从
image_requests
中选择count(*)作为聚合,其中date(created_at
)=2019-01-24 00:00:00和WHERE functional_id LIKE"%1%")
我雄辩的代码:
$counter = ImageRequest::whereDate('created_at', $date)->whereRaw('WHERE functional_id LIKE "1%"')->count();
这应该有效:
$counter = ImageRequest::whereDate('created_at', $date)
->where('functional_id', 'like', '1%')
->count();
我认为问题出在额外的"
上。但是,在这种情况下不需要使用whereRaw()
。where()
就足够了,而且不太容易出现这样的错误:)
编辑:根据您的评论,如果您想检查第十二个字符是否为1
,以下内容应该有效:
$counter = ImageRequest::whereDate('created_at', $date)
->whereRaw('SUBSTRING(funtional_id, 12, 1) = 1')
->count();