Yii2 有很多相同的关系 table

Yii2 hasMany relation with same table

场景如下:

我有两个 table:

family: id, name
person: id, name, familyId

外键在人身上 (familyId -> family.id)

在我的 Person 模型中,我希望建立一个关系,该关系可以包含与当前人具有相同 familyId 的所有人条目。

基本上我想$person = Person::find([...])->with('family')->all()获取当前的Person模型,包括一系列家庭成员。

到目前为止我在 PersonModel 上有这个:

public function getFamilyMembers()
{
   return $this->hasMany(Person::className(), ['familyId' => 'familyId']);
}

...

$person = Person::find()
            ->with('familyMembers')
            ->where(['id'=>1]);
foreach($person->family as $m) {
   var_dump($m);
}

我知道我可以用一个结 table 来做到这一点。但由于它是 1:n 关系,我想避免额外的 Table.

谢谢。

快速决策类似于您个人模型中的查询:

public function getRelatedPersons()
{
   return self::find()->jeftJoin(Family::tableName(), 'person.familyId =  
   family.id')->where(['person.familyId' => $this->familyId])->all();
}
...
foreach($personModel->relatedPersons as $person)  {
   var_dunp($preson);
}