laravel - 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'));
}
解决方案
AFAIK,您将无法使用,因为 Laravel在其查询构建器上scopeLatest
已经有一个latest()方法。
至于你试图做的范围,这里有几个指针:
- a
scope
不应该被定义为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'));
}