我有以下查询:
$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
变量,因此它只是因为它是数组的一部分而改变,这就是我只想更新其中一行的原因。
答案 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();