首页 > 解决方案 > Laravel 5.8 查询范围

问题描述

我正在学习 laravel,我遇到了这个问题,当我使用查询范围时,我的代码返回零数据。数据库有数据。这有点令人困惑,因为我认为我按照教程做的一切都是正确的

范围:

public static function scopeLatest($query)
{
    return $query->orderBy('id', 'asc')->get();
}

控制器:

public function index()
{
    $posts = Post::Latest();

    return view('posts.index', compact('posts'));
}

标签: laravelscopelaravel-5.8

解决方案


AFAIK,您将无法使用,因为 Laravel在其查询构建器上scopeLatest已经有一个latest()方法。


至于你试图做的范围,这里有几个指针:

  • ascope不应该被定义为static方法
  • 你实际上不应该get()在你的范围内调用
  • 您不需要从范围返回。

因此,即使这个范围实际上不起作用(因为名称),作为一个例子,这就是根据您的问题的样子:

public function scopeLatest($query)
{
    $query->orderBy('id', 'desc'); //desc should put the latest first
}

您的控制器方法(在任何一种情况下)应该是:

public function index()
{
    $posts = Post::latest()->get();

    return view('posts.index', compact('posts'));
}

推荐阅读