在 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);
我想更新一组列,其中我有一些条件,就好像某些值是空的,然后不要更新该列。
$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);