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

时间:2013-06-28 18:05:59

标签: laravel eloquent

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

  • getNextArticle
  • getPreviousArticle

所以当我使用时:

$article = Article::find(1);

我可以跟进:

$article->getNextArticle;

$article->getPreviousArticle;

我需要访问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
    }
}

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:2)

来源Laravel http://laravel.com/docs/4.2/eloquent

文章多余,所以我将其删除。

Class Article extends Eloquent {

        public function scopeNext($query)
        {
            return $query->where('id', '>', $this->id)->take(1)->get();
        }

        public function scopePrevious($query)
        {
            return $query->where('id', '<', $this->id)->take(1)->get();
        }
    }

答案 2 :(得分:0)

我可能会这样尝试......不确定它是否会起作用

 class Article extends Eloquent
  {
    public function getNextArticle()
    {
    return Article::find($this->id+1)->get();
    }

    public function getPreviousArticle()
    {
    return Article::find($this->id-1)->get();
    }
  }