在Laravel中向Eloquent Model添加自定义方法

Jam*_*ery 10 laravel eloquent

我的Laravel 4应用程序中有一个Eloquent Article模型.目前它是空的,但我想要做的是定义两种方法:

  • getNextArticle
  • getPreviousArticle

所以当我使用时:

$article = Article::find(1);
Run Code Online (Sandbox Code Playgroud)

我可以跟进:

$article->getNextArticle;
Run Code Online (Sandbox Code Playgroud)

$article->getPreviousArticle;
Run Code Online (Sandbox Code Playgroud)

我需要访问在Articles模型中从find()返回的结果,这样我就可以使用这些数据从SQL查询中获取下一篇和前一篇文章.

从理论上讲,我最终得到的结论是:

class Article extends Eloquent
{
    public function getNextArticle()
    {
        // SQL query to get next article from the database
    }

    public function getPreviousArticle()
    {
        // SQL query to get previous article from the database
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 11

Class Article extends Eloquent {

    public function getNextArticle()
    {
        return Article::where('id', '>', $this->id)->take(1)->get();
    }

    public function getPreviousArticle()
    {
        return Article::where('id', '<', $this->id)->take(1)->get();
    }
}
Run Code Online (Sandbox Code Playgroud)