【发布时间】:2016-01-11 14:12:54
【问题描述】:
如何在 Laravel 的 where 子句中使用 ?以下不工作:
$company['jobs']->where('created_at','>=',$Start_Date)->where('created_at','<=',$End_Date)
【问题讨论】:
标签: laravel collections where-clause
如何在 Laravel 的 where 子句中使用 ?以下不工作:
$company['jobs']->where('created_at','>=',$Start_Date)->where('created_at','<=',$End_Date)
【问题讨论】:
标签: laravel collections where-clause
使用orWhere 方法:
$company['jobs']->where('created_at', '>=', $Start_Date)
->orWhere('created_at', '<=', $End_Date);
或者,您可以使用whereBetween 方法:
$company['jobs']->whereBetween('created_at', [$Start_Date, $End_Date]);
【讨论】:
->filter($callback)。
这是正确的解决方案
$filtered = $company['jobs']->filter(function ($item) use($Start_Date,$End_Date) {
error_log($item['created_at']);
return $item['created_at'] >= $Start_Date && $item['created_at'] <= $End_Date;
});
【讨论】:
正如@Joseph Silber 所说,您可以在模型中创建一个 Scope 来执行您自己的逻辑。像这样:
// Inside your model
public function scopeSearch($query, $field, $value)
{
if(is_numeric($value))
return $query->where($field, '=', "$value");
elseif(!empty($value))
return $query->where($field, '=', "$value");
else
return $query;
}
然后,您可以从控制器调用它:
$query = Company::search('year',2016);
【讨论】: