【问题标题】:How do I use < or > in where clauses on collection in Laravel 5.1如何在 Laravel 5.1 集合的 where 子句中使用 < 或 >
【发布时间】:2016-01-11 14:12:54
【问题描述】:

如何在 Laravel 的 where 子句中使用 ?以下不工作:

$company['jobs']->where('created_at','>=',$Start_Date)->where('created_at','<=',$End_Date)

【问题讨论】:

    标签: laravel collections where-clause


    【解决方案1】:

    使用orWhere 方法:

    $company['jobs']->where('created_at', '>=', $Start_Date)
                    ->orWhere('created_at', '<=', $End_Date);
    

    或者,您可以使用whereBetween 方法:

    $company['jobs']->whereBetween('created_at', [$Start_Date, $End_Date]);
    

    【讨论】:

    • "Between 不存在的方法。" . $company['jobs'] 是在查询时使用 with('jobs') 返回的集合
    • 如果已经是一个集合,就不能这样查询了。您必须将自定义逻辑传递给 -&gt;filter($callback)
    • 您能否详细解释一下我如何在该逻辑中使用两个子句。
    • $filtered = $company['jobs']->filter(function ($item) use($Start_Date,$End_Date) { return $item['created_at'] >= $Start_Date && $项目['created_at']
    【解决方案2】:

    这是正确的解决方案

    $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;
                          });
    

    【讨论】:

      【解决方案3】:

      正如@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);
      

      【讨论】:

        猜你喜欢
        • 2017-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-15
        • 2016-03-15
        相关资源
        最近更新 更多