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 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员