Laravel 5.6雄辩的whereDate和WhereRaw错误



我正在尝试查找今天创建的所有记录,并以列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();

最新更新