10

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

  • 获取下一篇文章
  • 获取上一篇文章

这样当我使用时:

$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
    }
}
4

3 回答 3

12
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();
    }
}
于 2014-02-03T18:58:03.550 回答
3

来源 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();
        }
    }
于 2014-12-05T03:28:53.203 回答
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();
    }
  }
于 2013-06-28T18:18:46.340 回答