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

Add column with condition in laravel update query

我想更新一组列,其中我有一些条件,就好像某些值是空的,然后不要更新该列。

$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 已设置或不为空,然后包括其他排除,与 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);