0

如何将 Laravel 中的记录更新为与以前相同的值。

尝试了以下方法,但没有成功,我不想再做一次查询来获取值并设置它。

$user = User::update($edit['id'], array(
        'name'      => $edit['username'],
        'email'   => $edit['email'],
        'password' => (is_null($edit['password']) ? '`password`' : Hash::make($edit['password'])),
));

有任何想法吗?

4

2 回答 2

3

这就是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);

如果UserEloquent模型,试试这个:

$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();
于 2013-01-17T19:05:40.473 回答
3

我想为我正在从事的项目做同样的事情。我知道我得到了它的工作,我认为这是如何:

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'])
));
于 2013-01-17T20:17:23.080 回答