我确信这很简单,但我找不到任何例子。
我使用流畅的Laravel应用程序来记录用户的登录信息,因此我创建了自己的auth驱动程序,但是我遇到了一个混合原始数据和没有原始数据的流畅查询的问题,请看下面的内容:
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所说,如果它看起来很难看,那就不在框架中......所以我想知道我在这里缺少什么。
答案 0 :(得分:3)
首先,如果尚未完成,请为登录创建一个模型,这样您就可以使用laravel自己的ORM 雄辩。 Eloquent允许您以非常富有表现力的方式编写简单而强大的查询。
现在您可以执行以下两个选项之一:
$logins = Login::create(array('email' => 'example@gmail.com'));
或者,在您的情况下可能更优雅:
$login = new Login;
$login->email = 'example@gmail.com';
$login->login_date = DB::raw('UNIX_TIMESTAMP(NOW())');
$login->save();
有关详细信息,请参阅 eloquent docs 。
答案 1 :(得分:0)