Laravel 5.2多态模型返回所有​​关系有价值的地方

时间:2016-03-14 19:01:44

标签: php laravel eloquent laravel-5.2

我有一个名为 FeedItem 的多态模型,它与警告发布模型具有多态关系。

还有另一个名为类别的模型,其中AlertPublication模型与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()语句。

任何人都可以提供这种查询的方式吗?

0 个答案:

没有答案