我能获得关系模型的属性吗?

时间:2018-01-24 16:03:39

标签: php laravel laravel-5

例如在模型Post中,我有这样的关系:

public function voters()
{
     return $this->morphMany(Voter::class, 'entity');
}

我可以获得从中获得选民的邮政实体的属性和字段吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以访问Post实体的属性

  

您也可以从中检索多态关系的所有者   通过访问执行方法的名称来获取多态模型   对morphTo的调用。在我们的例子中,这是可评论的方法   评论模型。因此,我们将以动态方式访问该方法   属性:

<?php 
$comment = App\Comment::find(1);
$commentable = $comment->commentable;
  

评论模型上的可评论关系将返回a   发布或视频实例,具体取决于所拥有的模型类型   评价。

对于您的示例,您必须在Voter实体中添加一个方法,并将其称为votable

<?php
/**
 * Get all of the owning commentable models.
 */
public function votable()
{
    return $this->morphTo();
}

然后,当你找回一个选民,并希望获得&#34;所有者&#34; (在这种情况下是帖子),你会打电话:

<?php 
$voter = App\Voter::find(1);
$votable = $voter->votable;

$votable将是投票所有者的一个实例(你发布)。从那里,您可以像平常一样访问其属性。