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 に答える