Eloquent正在生成错误的更新查询

时间:2014-09-29 18:36:56

标签: laravel laravel-4 eloquent

我在从数据库获取记录之后尝试更新

$item = Model::find($id);
$item->field = 'foo';
$item->save();

查找请求的记录,但为更新记录而生成的查询正确:

update `Models` set `field` = ? where `id` is null

我不知道为什么会发生这种情况!

出了什么问题?

更新

我刚刚在数据库表中将primary-KeyID重命名为id。然后它工作了!我不知道它的区分大小写

update `bannerads_orders` set `ViewedCount` = ? where `id` = ?

3 个答案:

答案 0 :(得分:3)

好吧,我发现了问题。正如Laravel文件所说:

  

注意:Eloquent还会假设每个表都有一个主键   列名为id。您可以定义primaryKey属性来覆盖它   惯例

但在我的表格中,ID不是id。所以在我将其更改为id后,一切都按预期工作。

答案 1 :(得分:0)

Laravel使用prepared statements。这没什么不对。此外,您实际上没有指定错误。

答案 2 :(得分:0)

你应该在这种情况下使用:

$item = Model::findOrfail($id);
$item->field = 'foo';
$item->save();

似乎$id可能为null或用户无法找到,而且保存它没有任何意义。

如果未找到用户,将抛出异常并且此保存不会被执行