【问题标题】:DB::update laravel 5 raw queryDB::update laravel 5 原始查询
【发布时间】:2017-11-17 11:03:13
【问题描述】:

我打算使用laravel db update,相当于sql。

update users set username = "admin", status = "active" where user_id = 1

这是我测试运行的查询。有错吗?

$username = "admin";
$status = "active";

DB::update('update users set username = '  .$username. ',
status = '.$status.'  where user_id = ?' ,['1']);

【问题讨论】:

    标签: php sql database laravel eloquent


    【解决方案1】:

    你应该像这样更新你的查询:

    雄辩的查询:

    User::where('user_id',1)->update(array(
                             'username'=>$username,
    ));
    

    流畅的查询:

    DB::table('users')->where('user_id',1)->update(array(
                                     'username'=>$username,
    ));
    

    希望对你有帮助

    【讨论】:

    • where子句中有多个条件时修改为DB::table('table')->where([ ['column1','=',val1'],['column2','=','val2']])->update(['UpdateColunn'=>'updateValue']);
    【解决方案2】:

    正确的查询应该是

    DB::update('update users set username = ? , status = ? where user_id = ?', ["admin" , "active" , 1]);
    

    User::where('user_id', 1)->update( array('username'=>'admin', 'status'=>'active') );
    

    其中“User”是“users”表的模型名称。

    【讨论】:

    • 第一个 RAW DB::update 方法的结果是什么?
    • 返回改变的行数;如果没有更改行,则为 0
    【解决方案3】:

    使用 laravel 查询构建器的更好方法是:

    DB::table('users')
        ->where('user_id', 1)
        ->update(['username' => $username, 'status' => $status]);
    

    【讨论】:

      【解决方案4】:

      您正在使用原始查询,可以这样做

      更新用户设置用户名 = "admin", status = "active" 其中 user_id = 1

      DB::table('users')
      ->where('user_id',1)
      ->update(['username'=>'admin','status'=>'active']);
      

      $username = "admin";
      $status = "active";
      
      DB::update(DB::RAW('update users set username = '  .$username. ',
      status = '.$status.'  where user_id = ?' ,['1']));
      

      【讨论】:

        【解决方案5】:

        调用DB::update的正确方法你需要这样的东西

              $username = "admin";
              $status = "active";
              DB::update('update users set username = ? , status = ? where user_id = ?', [$username , $status , 1]);
        

        这应该返回受影响的行数

        【讨论】:

          猜你喜欢
          • 2019-02-03
          • 1970-01-01
          • 2020-10-19
          • 2012-10-29
          • 1970-01-01
          • 1970-01-01
          • 2020-03-27
          • 2018-04-28
          • 2014-11-30
          相关资源
          最近更新 更多