模式 : 媒体: ID, mediable_id, mediable_type, 名称
分类 ID, PARENT_ID, 名,
文章 ID, 标题, 描述, author_id和其他一些元数据字段
articles_categories article_id的, CATEGORY_ID,
用户 ID, 名称, 电子邮件, 通
关系:
文章和类别:多对多
文章和媒体:多态一对多
我在Laravel - Eager Loading Polymorphic Relation's Related Models尝试了damiani建议的各种方法,但不知何故,我无法为文章和类别加载媒体。
$articles = Categories->with(array('user', 'media','articles' => function($query)
{
$query->where('articles.is_featured', '=', 1)
->where('articles.status', '=', 1)
->where('published_at', '>=', new \DateTime('today'))
->orderBy('created_at', 'desc');
}));
我也尝试过: $ articles = Categories-> with('articles','articles.media','articles.user');
答案 0 :(得分:0)
正如Jarek和其他stackoverflow用户所建议的,我需要在with
静态调用中包含另一个引用,我的代码是:
$articles = Category::with(array('articles.media','articles' => function($query)
{
$query->where('articles.is_featured', '=', 1)
->where('articles.status', '=', 1)
->where('published_at', '<=', new \DateTime('today'))
->orderBy('created_at', 'desc');
}));
这就是我获得所需数据的方式:
foreach($categories as $category){
echo "<hr>Category Information: ".$category->id." : ".$category->name;
foreach($category->articles as $article){
echo "--<br>Article ID is: ".$article->id;
foreach($article->media as $media){
echo "----<br>Image: ".$media->name;
}
}
}
我希望我使用正确的解决方案。