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