使用Laravel和雄辩的ORM -是否有一种方法可以从模型内部执行以下操作:
我有一张收款台。它有一个collection_type属性。如果我从collections模型中选择一行,我还需要从对应于collection_type值的表中选择10条最近的记录。因此,如果值为post,则它将从posts表中选择10条最近的记录。
我认为集合模型中的以下方法可以工作:
public function most_recent(){
$collection_type_class = Relation::getMorphedModel($this->collection_type);
return $collection_type_class::orderBy("id", "DESC")->take(10)->get();
}
protected $with = ['most_recent'];
如果有帮助,结构可能看起来有点像这样:
collections:{'id','collection_type'} //collection_type=['post'||'page'||'testimonial']
posts:{'id','title','snippet','post'...etc },
pages:{'id','title','meta'...etc },
testimonials:{'id','name','testimonial'...etc }
1条答案
按热度按时间hmmo2u0o1#
我已经想明白了。问题是$this->collection_type在使用with时没有值,我需要像这样使用访问器: