我有3张桌子:
users
-id
-name
relation_types
-id
-type
user_relation
-user1_id
-user2_id
-relation_type_id
在User
模型中我有:
public function relatedParties()
{
return $this->belongsToMany('App\User', 'user_relation', 'user1_id', 'user2_id')->withPivot('relation_type_id');
}
我可以通过relation_type_id
获取App\User::find(1)->relatedParties[0]->pivot->relation_type_id
。
为了获得relation type
而不是id
,我在user_relation
table
public function type()
{
return $this->belongsTo('App\RelationType', 'relation_type_id');
}
但App\User::find(1)->relatedParties[0]->pivot->type
会返回null
任何想法都会受到赞赏。
答案 0 :(得分:1)
您可以使用Nested Eager Loading
$user=User::with('relatedParties','relatedParties.type')->first();
foreach($user->relatedParties as $relatedParty)
{
foreach($relatedParty->type as $type)
{
print_r($type->type);
}
}
答案 1 :(得分:0)
您无法从数据透视表中访问类型,因为类型不是proviot表中的列。因此,访问类型的代码为访问类型提供了null。
App\User::find(1)->relatedParties[0]->pivot->type
user_relation表中的关系再次出现在relation_types,user_relation表之间,用户实现中无法调用user_relation表,user_relation。
获取" relation_type_id"的类型只需从relation_types表中获取类型,如下所示。
$relationTypeId = \App\User::find(3)->relatedParties[0]->pivot->relation_type_id;
$rtype = \App\RelationType::find($relationTypeId)->pluck('type');
echo $rtype;