我的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
}
}
答案 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();
}
}