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"错误结束。我的问题是什么?
谢谢
可以使用查询范围来实现此目的。
# File.php (model)
public function scopeRecentFiles($query)
{
return $query->orderBy('updated_at', 'DESC')->take(5);
}
# Controller
$files = Auth::User()->files()->recentFiles()->get();
return $files;