Eloquent:检索最近添加的记录

时间:2014-12-09 13:32:59

标签: php laravel laravel-4 orm eloquent

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"错误。 我的问题是什么?

由于

1 个答案:

答案 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;