如何将Laravel中的记录更新为与之前相同的值。
尝试了以下操作,但它没有用,我不想再做另一个查询来获取值并进行设置。
$user = User::update($edit['id'], array(
'name' => $edit['username'],
'email' => $edit['email'],
'password' => (is_null($edit['password']) ? '`password`' : Hash::make($edit['password'])),
));
有什么想法吗?
答案 0 :(得分:2)
这就是DB::raw()
的用途:
$user = User::where_id($edit['id'])::update([
'name' => $edit['username'],
'email' => $edit['email'],
'password' => empty($edit['password']) ? DB::raw('`password`') : Hash::make($edit['password'])
]);
更好的方法是不在数组中设置它:
$update_info = [
'name' => $edit['username'],
'email' => $edit['email']
];
if (! empty($edit['password'])) {
$update_info['password'] = Hash::make($edit['password']);
}
$user = User::where_id($edit['id'])::update($update_info);
如果User
是Eloquent
模型,请尝试以下操作:
$user = User::find($edit['id']);
$user->username = $edit['username'];
$user->email = $edit['email'];
if (! empty($edit['password'])) {
$user->password = Hash::make($edit['password']);
}
$user->save();
答案 1 :(得分:1)
我想为我正在进行的项目做同样的事情。我知道我的工作正常,我想这就是:
User::where('id','=',$edit['id'])->update( array(
'name' => $edit['username'],
'email' => $edit['email'],
'password' => is_null($edit['password']) ? DB::raw('`password`') : Hash::make($edit['password'])
));