我敢肯定这很简单,但我找不到任何例子。
我在我的 Laravel 应用程序中使用 fluent 来记录用户的登录信息,因此我创建了自己的身份验证驱动程序,但是我遇到了混合原始数据和非原始数据的 fluent 查询的问题,请查看以下内容:
DB::table('logins')->insert(array(
'login_email' => $arguments['email'],
'login_date' => DB::raw('UNIX_TIMESTAMP(NOW())'),
'login_ip'=> DB::raw('INET_ATON('.$_SERVER['REMOTE_ADDR'].')'),
'login_result' => (bool)$success
));
什么导致:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@gmail.com, UNIX_TIMESTAMP(NOW()), INET_ATON(127.0.0.1), ?)' at line 1
SQL: INSERT INTO `cs_logins` (`login_email`, `login_date`, `login_ip`, `login_result`) VALUES (?, UNIX_TIMESTAMP(NOW()), INET_ATON(127.0.0.1), ?)
Bindings: array (
0 => false,
)
所以我做了以下事情:
DB::table('logins')->insert(array(
'login_email' => DB::raw("'".$arguments['email']."'"),
'login_date' => DB::raw('UNIX_TIMESTAMP(NOW())'),
'login_ip'=> DB::raw('INET_ATON('.$_SERVER['REMOTE_ADDR'].')'),
'login_result' => DB::raw((bool)$success)
));
但正如 Dayle Rees 所说,如果它看起来很丑,它不在框架中......所以我想知道我在这里缺少什么。