【问题标题】:Data comparison in laravellaravel 中的数据比较
【发布时间】:2019-01-10 16:02:07
【问题描述】:

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

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

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 不存在。

【问题讨论】:

    标签: php laravel date laravel-5


    【解决方案1】:

    使用::all() 会返回一个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 实例,您可以在调用->get() 返回@ 之前将附加子句(->where()->whereMonth() 等)链接起来987654334@ subagente 记录。

    旁注,"data" 应该是"date"吗?

    【讨论】:

    • 非常感谢您的帮助,我不知道我可以创建一个新实例。关于日期和'日期类型字段的名称,但为了避免混淆,我把它用英文写了,因为我用意大利语插入了它
    • 啊,明白了。不用担心!但是,是的,Builder,它是由->where()->with()->has() 等生成的,可以链接多个方法,但只要你调用->get(),或者如果你从@987654343 开始@,它是一个Collection,它有不同的方法/逻辑。一开始很困惑,但随着你使用 Laravel 的次数越多,它就会变得越清晰。
    猜你喜欢
    • 2020-05-29
    • 2019-03-30
    • 1970-01-01
    • 2020-08-09
    • 2019-02-20
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多