我有一个名为 FeedItem 的多态模型,它与警告和发布模型具有多态关系。
还有另一个名为类别的模型,其中Alert
和Publication
模型与hasMany
的关系为。{/ p>
FeedItem
public function feedable()
{
return $this->morphTo();
}
公开
public function feedItem()
{
return $this->morphOne('FeedItem', 'feedable');
}
public function categories()
{
return $this->hasMany(Category::class);
}
警报
public function feedItem()
{
return $this->morphOne('FeedItem', 'feedable');
}
public function categories()
{
return $this->hasMany(Category::class);
}
我希望能够获得FeedItems
模型具有给定feedable
的所有category
。
我试过了:
$items = FeedItem::with(['feedable.categories' => function($item) {
$item->whereHas('feedable.categories', function ($q) {
$q->where('categories.name', 'my-category');
})->orderBy('id', 'desc')
->paginate();
然而,问题是feedable
关系永远不会被加载,这会阻止执行categories
关系范围。
例如,如果我这样做:
$items = FeedItem::with(['feedable.categories' => function($item) {
dd('This should be displayed');
$item->whereHas('feedable.categories', function ($q) {
$q->where('categories.name', 'my-category');
})->orderBy('id', 'desc')
->paginate();
永远不会调用dd()
语句。
任何人都可以提供这种查询的方式吗?