在laravel更新查询中添加带有条件的列

问题描述

我要更新一组列,这些列中我有一些条件,好像有些值是空的,那么不要更新该列。

$data = DB::connection('server')->table ('l AS l')
    ->join('lc AS lc','l.id','=','lc.id_c')
    ->where('l.id',$input['ass_l_id'])
    ->where('l.status',$input['ass_l_s'])
    ->update(
      [
        'l.ass_user' => $input['user'],'l.ref_by' => $input['ref_by'],'lc.phone_number' => $input['mobile_no']
      ]
    );

上面的查询工作正常,但是我需要添加条件,就像ref_by设置为空或不为空,然后包含else exclude,与phone_number相同。 我该如何实现。我也尝试过原始查询

$sql = "UPDATE l AS l JOIN lc AS lc ON l.id = lc.id_c SET l.ass_user = '".$input['user'] ."'";
            if(isset($input['ref_by']) && $input['ref_by'] != '') {
                $sql.= ",'l.ref_by' = '".$input['ref_by']."'";
            }
            if(isset($input['mobile_no']) && $input['mobile_no'] != '') {
                $sql.= ",'lc.phone_number' = '".$input['mobile_no']."'";
            }
            
            $sql.= " WHERE l.id = '". $input['ass_l_id'] ."' AND l.status = '".$input['ass_l_s']."'";

$data = DB::connection('server')->raw($sql);

但是上面的查询不会更新列。

任何帮助都是可取的。谢谢。

解决方法

update方法采用数组作为参数,表示要更新的列及其值...

建立自己的自我,然后传递自我……

$updateFields=[];
if(isset($input['ref_by']) && $input['ref_by'] != '') {
              $updateFields['l.ref_by']= $input['ref_by'];
            }
 if(isset($input['mobile_no']) && $input['mobile_no'] != '') {
               $updateFields['l.phone_number']= $input['mobile_no'];
            }
$updateFields['l.ass_user']=  $input['user'];



$data = DB::connection('server')->table ('l AS l')
    ->join('lc AS lc','l.id','=','lc.id_c')
    ->where('l.id',$input['ass_l_id'])
    ->where('l.status',$input['ass_l_s'])
    ->update($updateFields);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...