首页 > 解决方案 > laravel 中的数据比较

问题描述

我是 laravel 的初学者,我正在尝试运行数据库中给出的比较查询。我保存了一个由表单实现的字段日期以及包括名称在内的其他字段。我尝试查询该名称,并且它与下面的代码一起正常工作。

我想检索所有具有 name 变量作为我传递的字段名称的行(在这里它似乎有效),然后只有那些具有字段 date 的那些在我作为变量传递的数字处具有指定月份的数字 $月。这样做的正确形式是什么?谢谢皮耶罗

public function filterparamenter(){
      $name = request('name');
      $month = request('$month');
      $query = subagente::all();
      $query = $query->where('subagente', $subagente);
      $query = $query->whereMonth('data', $month)->get();   

方法 Illuminate\Database\Eloquent\Collection::whereMonth 不存在。

标签: phplaraveldatelaravel-5

解决方案


Using::all()返回 a Collection,它有一个->where()方法,但->whereMonth()只在 Eloquent 的Builder类中可用。更改您的代码如下:

$query = subagente::query();
$query = $query->where('subagente', $subagente);
$query = $query->whereMonth('data', $month)->get();

或者,更紧凑:

$results = subagente::where("subagente", $subagente)
->whereMonth("data", $month)
-get();

使用::query()::where()开始查询将生成一个Builder实例,您可以在调用返回 a记录之前链接附加子句( ->where()->whereMonth()等) 。->get()Collectionsubagente

旁注,应该"data""date"


推荐阅读