Laravel很多很多关系

时间:2015-01-22 12:54:04

标签: php laravel-4 eloquent

模式 媒体: ID, mediable_id, mediable_type, 名称

分类 ID, PARENT_ID, 名,

文章 ID, 标题, 描述, author_id和其他一些元数据字段

articles_categories article_id的, CATEGORY_ID,

用户 ID, 名称, 电子邮件, 通

关系

  1. 文章和类别:多对多

  2. 文章和媒体:多态一对多

  3. 媒体类别:多态一对多
  4. 文章给用户:一对一
  5. 我在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');

1 个答案:

答案 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;
            }
        }
    }

我希望我使用正确的解决方案。