【问题标题】:Laravel update mysql field with same valueLaravel 用相同的值更新 mysql 字段
【发布时间】:2013-01-01 09:56:51
【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

    标签: php mysql orm laravel


    【解决方案1】:

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

    【讨论】:

    • 建议的解决方案均无效。第一个,只是和以前一样,第二个返回一个Cannot use a scalar value as an array消息
    • @w0rldart - User 是一个雄辩的模型吗?
    • 是的,是class User extends Eloquent
    • @w0rldart - ...第一个例子没有给你错误?这很奇怪。 AFAIK ::update 仅在 Fluent Query Builder 中使用。 Eloquent 希望你通过 id 来::find,然后在上面设置属性。
    • @w0rldart - 您尚未指定密码要求。现在我了解您在做什么,我建议您使用empty(尽管这也会阻止0 通过。您的选择)。我相应地更新了我的答案。
    【解决方案2】:

    我想为我正在从事的项目做同样的事情。我知道我已经成功了,我认为是这样的:

    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-03-31
      • 2023-03-03
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 2018-03-06
      • 1970-01-01
      相关资源
      最近更新 更多