不能直接传入数组,但是可以处理数组:
$whereArray = array('user_id' => 5,'dept_id' => 5);
$query = DB::table('employees');
foreach($whereArray as $field => $value) {
$query->where($field, $value);
}
return $query->delete();
这个功能可以被提取到一个函数中,甚至是一个模型范围,它接受你的数组并构建并返回查询给你。
例如,如果您有一个Employee 模型:
class Employee extends Eloquent {
public function scopeWhereArray($query, $array) {
foreach($array as $field => $value) {
$query->where($field, $value);
}
return $query;
}
}
那么你可以这样做:
$whereArray = array('user_id' => 5,'dept_id' => 5);
return Employee::whereArray($whereArray)->delete();
编辑
如果您也希望能够提供运算符,则只需更改数组的格式:
$whereArray = array(
array(
'field' => 'user_id',
'operator' => '=',
'value' => 5
),
array(
'field' => 'dept_id',
'operator' => '=',
'value' => 5
),
array(
'field' => 'salary',
'operator' => '<',
'value' => 5000
)
);
return Employee::whereArray($whereArray)->delete();
你需要更新你的函数:
class Employee extends Eloquent {
public function scopeWhereArray($query, $array) {
foreach($array as $where) {
$query->where($where['field'], $where['operator'], $where['value']);
}
return $query;
}
}