doufeng3602 2019-02-17 06:00
浏览 421
已采纳

具有多个条件的laravel查询更新

I have column named flag and I want to update it if value is 1 to null and if value is null to 1 so far is easy to update this column but issue comes where I send multiple data to controller and not only one.

code

public function flagmultiplemessage(Request $request){
  $ids = $request->input('ids');
  DB::table('messages')->whereIn('id', $ids)
  ->whereNotNull('messages.flag')->update(['flag' => null])
  ->whereNull('messages.flag')->update(['flag' => '1']);
}

with function above i get:

message Call to a member function whereNull() on integer

dd

code above is something like this:

ids = [11, 12, 3]
database = [
  11->flag = 1,
  12->flag = null,
  3->flag = 1,
]

the result of code above most change my database like:

database = [
  11->flag = null,
  12->flag = 1,
  3->flag = null,
]

any idea why i get error?

  • 写回答

3条回答 默认 最新

  • douliaodan2738 2019-02-17 06:36
    关注

    it occurred because you called whereNull method on update method. You should run 3 separate query like this.

    public function flagmultiplemessage(Request $request){
      $ids = $request->input('ids');
    
      DB::transaction(function () use ($ids) {
        DB::table('messages')->whereIn('id', $ids)
        ->whereNotNull('messages.flag')->update(['flag' => 0]);
    
        DB::table('messages')->whereIn('id', $ids)
        ->whereNull('messages.flag')->update(['flag' => 1]);
    
        DB::table('messages')->whereIn('id', $ids)
        ->where('messages.flag', 0)->update(['flag' => null]);
    
      });
    
    }
    
    

    but for better performance I suggest you use boolean for flag column and use this simple query

    DB::table('messages')->whereIn('id', $ids)->update(['flag' => DB::raw('!flag')]);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀