Laravel 5.6 雄辩的 whereDate 和 WhereRaw 错误

Mic*_*ael 1 php mysql laravel

我正在尝试查找今天创建的所有记录,并以 1 开始列functional_id

我收到以下语法错误:

SQLSTATE[42000]:语法错误或访问冲突:1064 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,在第 1 行的“ WHEREfunctional_id LIKE“1%”附近使用正确的语法(SQL:select count(*) as aggregate from image_requestswhere date( created_at) = 2019-01-24 00:00:00 和 WHEREfunctional_id LIKE "1%")

我雄辩的代码:

$counter = ImageRequest::whereDate('created_at', $date)->whereRaw('WHERE functional_id LIKE "1%"')->count();
Run Code Online (Sandbox Code Playgroud)

Moz*_*mil 5

这应该有效:

$counter = ImageRequest::whereDate('created_at', $date)
    ->where('functional_id', 'like', '1%')
    ->count();
Run Code Online (Sandbox Code Playgroud)

我认为问题在于额外的". 但是,whereRaw()在这种情况下不需要使用 a 。Awhere()已经足够了,而且不太容易出现这样的错误:)

编辑:根据您的评论,如果您想检查第十二个字符是否为 a 1,则应执行以下操作:

$counter = ImageRequest::whereDate('created_at', $date)
    ->whereRaw('SUBSTRING(funtional_id, 12, 1) = 1')
    ->count();
Run Code Online (Sandbox Code Playgroud)