雄辩:检索最近添加的记录


Eloquent: Retrieve recent added records

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;