【发布时间】:2019-12-13 15:08:18
【问题描述】:
我想从我的活动表中选择给定日期的所有行。为此,我使用了whereRaw() 子句。这是我的代码:
$activities = Activity::whereRaw('Date(created_at) as date',$date)->get();
dd($activities);
但我得到了一个错误:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“as date”附近使用正确的语法(SQL:select * from
activitieswhere Date(created_at) as date)
请帮我解决这个问题。这是$date 中的dd():
"2019-12-12"
【问题讨论】:
-
您不能在 where 查询中使用列别名,并且您没有尝试绑定任何内容。请参阅laravel.com/docs/5.8/queries#raw-methods 了解如何使用原始方法。
-
选择给定日期的行抱歉忘记提及
-
我更新我的帖子请看这个
-
这更有意义。无论如何,为什么要
whereRaw()? Laravel 有一个whereDate()方法应该可以解决这个问题。 -
没问题,乐于助人!通常,除非您特别需要原始查询,否则请尝试对数据库使用 Laravel 方法。请注意,如果您更改了数据库类型(从 MySQL 更改为其他类型),您的
whereRaws等可能需要更改才能使用这个新数据库。 Laravel 的方法适用于所有(或大多数)数据库,无需修改,因此最好先使用它们。