Laravel 4.2中雄辩的ORM让我发疯。我想检索用户最近添加的记录。
我有3个型号:用户,文件夹,文件。用户有许多文件夹,文件夹有很多文件。另外一个用户通过文件夹有很多文件(我想我不需要在这里发布我的模型来源,我希望我的描述足够准确)。
$files = Auth::User() -> files;
return $files;
此代码显示用户拥有的所有文件。
$files = Auth::User() -> files() -> orderBy('updated_at', 'DESC') -> take(5) -> get();
return $files;
这段代码实际上正在做我想要的。返回已编辑的最后5条记录。但我想让这个可重用,并用函数扩展我的模型。这就是我失败的地方:
# File.php (model):
public function recentFiles()
{
return $this -> orderBy('updated_at', 'DESC') -> take(5) -> get();
}
# Controller:
$files = Auth::User() -> files -> recentFiles;
return $files;
这以"未定义的属性结束:$ recentFiles"错误。 我的问题是什么?
由于
答案 0 :(得分:2)
您可以使用Query Scopes来实现这一目标。
# File.php (model)
public function scopeRecentFiles($query)
{
return $query->orderBy('updated_at', 'DESC')->take(5);
}
# Controller
$files = Auth::User()->files()->recentFiles()->get();
return $files;