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);
}
场景如下:
我有两个 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);
}