获取关系laravel的属性

时间:2018-01-13 16:11:09

标签: laravel eloquent

我正试图获得关系关系的属性,但我遇到了问题,我不知道这是怎么做的......

控制器:

public function user($id) {
    $user = UserProfile::where('friendly_url', '=', $id)->with('user', 'shares.links')->first();

    foreach($user->getRelation('shares')->pluck('links') as $link) {

//HERE IS TO RETURN LINK ATTRIBUTES, EXAMPLE $link->id
        dd($link);

    }
}

DD($链路)

Collection {#309 ▼
  #items: array:1 [▼
    0 => Link {#314 ▼
      #attributes: array:14 [▼
        "id" => 1
        "title" => "Crianças índigo nascem em 2018"
      ]

返回$ link-> id

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

2 个答案:

答案 0 :(得分:1)

您正在获取响应链接的集合,因此您需要再次迭代才能获得属性。

 foreach($user->getRelation('shares')->pluck('links') as $link) {

           $linksAttr = $link->map(function($li) {

               retrun [

                      //here you can return link attributes
                    'linkId' => $li->id, 
                    'linkTitle'=>$li->title

                  ];
               });

           dd($linksAttr);
        }
    }

答案 1 :(得分:0)

由于$link是一个集合,因此请使用first()获取对象:

dd($link->first()->id);