向Laravel中的雄辩模型添加自定义方法

向Laravel中的雄辩模型添加自定义方法,laravel,eloquent,Laravel,Eloquent,我在我的Laravel 4应用程序中有一个雄辩的文章模型。目前它是空的,但我要做的是定义两种方法: getNextArticle 获取上一篇文章 因此,当我使用: $article = Article::find(1); 我可以跟进: $article->getNextArticle; 及 我需要访问从文章模型中的find()返回的结果,以便使用这些数据从SQL查询中获取下一篇和上一篇文章 理论上,我最终会得到这样的结果: class Article extends Eloquen

我在我的Laravel 4应用程序中有一个雄辩的文章模型。目前它是空的,但我要做的是定义两种方法:

  • getNextArticle
  • 获取上一篇文章
因此,当我使用:

$article = Article::find(1);
我可以跟进:

$article->getNextArticle;

我需要访问从文章模型中的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
    }
}

我可能会这样尝试。。。不过,我不确定这是否有效

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

    public function getPreviousArticle()
    {
    return Article::find($this->id-1)->get();
    }
  }
类文章扩展了雄辩的{
公共函数getNextArticle()
{
return Article::where('id','>',$this->id)->take(1)->get();
}
公共函数getPreviousArticle()
{

返回文章::其中('id','源Laravel

文章是多余的,所以我删除了它

类文章扩展了雄辩的{
公共函数scopeNext($query)
{
返回$query->where('id','>',$this->id)->take(1)->get();
}
公共函数范围($query)
{

return$query->where('id','id'很少是完全顺序的,也不一定代表顺序。我有SQL查询要为下一篇和上一篇文章运行。我只是想弄清楚如何创建方法,以便将它链接到$article->find(1)->next()例如,我认为该方法应该是
static
以使其工作或使用
scope..
,例如
公共静态函数getNextArticle()
@roll如果将该方法设置为static,则会失去使用
$this->id
 class Article extends Eloquent
  {
    public function getNextArticle()
    {
    return Article::find($this->id+1)->get();
    }

    public function getPreviousArticle()
    {
    return Article::find($this->id-1)->get();
    }
  }
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();
    }
}
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();
        }
    }