我可以使用eloquent / fluent以最大ID更新单行

时间:2015-04-09 04:40:09

标签: mysql sql laravel laravel-4 eloquent

我有以下查询:

$row = Notification::where('from_user_id', '=', Auth::id())
               ->where('to_user_id', 0)->update(['to_user_id' => $obj]);

哪个有效,但如何只更新一行?我希望使用最大id,例如->max('id'),但我尝试了很多方法,但我没有运气。或者我可以使用时间戳来区分唯一性吗?

id|from_user_id|to_user_id |created_at|updated_at
1 | 8          | 0         |2015-04-09|2015-04-09
2 | 8          | 0         |2015-04-09|2015-04-09

我实际上正在遍历我的$obj变量,因此它只是因为它是数组的一部分而改变,这就是我只想更新其中一行的原因。

2 个答案:

答案 0 :(得分:0)

你错过了' ='在第二个where子句上签名并且更新值必须是数组类型,查询应该是

    $row = Notification::where('from_user_id', '=', Auth::id())
           ->where('to_user_id','=', 0)->update(array('to_user_id' => $obj));

答案 1 :(得分:0)

您可以获取最后一行(基于created_at字段):

$row = Notification::where('from_user_id', '=', Auth::id())
                ->where('to_user_id', 0)
                ->orderBy('created_at', 'desc')
                ->first();

并更新该行的to_user_id

$row->to_user_id = YOUR_TO_USER_ID;
$row->save();