得到关系的关系

时间:2018-01-11 03:22:43

标签: laravel eloquent

我试图通过laravel关系获取链接的评论,链接的评论正常返回,但我不知道如何在视图中获取它或dd(),我该怎么办?它?

控制器:

$page = Page::where('friendly_url', $id)
                ->select('id', 'photo', 'friendly_url', 'name', 'description', 'followers', 'links', 'tag_id', 'links_clicks')
                ->with('ptag', 'links', 'links.comments', 'links.tag')
                ->with(['links.comments.user' => function($query) {
                $query->select('id', 'name', 'lastname');
            }])->with(['links.comments.userProfile' => function($query) {
                $query->select('id', 'photo');
            }])->first();

DD($ PAGE-> getRelation('链接&#39)

Collection {#301 ▼
  #items: array:2 [▼
    0 => Link {#307 ▼
      #relations: array:2 [▼
        "comments" => Collection {#316 ▼
          #items: array:1 [▶]
        "tag" => Tag {#322 ▶}
      ]

DD($ PAGE-> getRelation('链接') - > getRelation('注释'))

BadMethodCallException
Method getRelation does not exist.

DD($ PAGE-> getRelation('链接') - >评论)

Exception
Property [comments] does not exist on this collection instance.

编辑:

我想显示comment和comment.user的属性,我该怎么做?

foreach($page->getRelation('links')->pluck('comments') as $comment) {
    dd($comment);             
}

Collection {#327 ▼
  #items: array:1 [▼
    0 => Comment {#325 ▼
      #attributes: array:5 [▼
        "id" => 3
        "content" => "teste"
        "link_id" => 1
        "user_id" => 1
        "created_at" => "2018-01-11 00:47:32"
      ]
      #relations: array:2 [▼
        "user" => User {#330 ▼
          #attributes: array:3 [▼
            "id" => 1
            "name" => "Halysson"
            "lastname" => "Teves dos Santos"
          ]
        }
        "userProfile" => UserProfile {#326 ▶}
      ]

4 个答案:

答案 0 :(得分:0)

试试这个 -

{{1}}

答案 1 :(得分:0)

  • 您应首先在相关模型上定义关系,然后使用'with'函数可以加载具有关系的模型或者可以通过单个模型直接调用关系,请参阅documentation以获取更多详细信息

例如:您已经定义了用户与电话的关系,因为用户拥有电话,一对一的关系。在用户模型中定义类似

的关系
public function phone()
{
 return $this->hasOne('App\Phone');
}

现在在用户模型实例上调用此关系。

$user = User::find(1);
dd($user->phone);

答案 2 :(得分:0)

因为您正在使用select()方法,所以还需要在其中包含所有外键,以允许Eloquent加载这些关系。

但是,由于您刚开始使用Laravel,我建议您从这个复杂的查询中删除select()方法。

答案 3 :(得分:0)

如果您想要一个页面的链接:

    read table <ft_itab> from <fs_itab> ....

如果你想要一个页面的所有评论:

$page->links

就是这样:))