问题描述
我要更新一组列,这些列中我有一些条件,好像有些值是空的,那么不要更新该列。
$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);