有一个这样的结构:
Entity1有许多Entity2,而Entity2有许多Entity3
我想要获取与Entity1的一个实体关联的Entity3的所有实体。
在SQL中,它将类似于:
SELECT Entity3.*
FROM Entity3
INNER JOIN Entity2 on Entitity3.entity2_id = Entity2.id
INNER JOIN Entity1 on Entity2.entity1_id = Entity1.id
WHERE
Entity1.id = X;
在Entity1模型中:
public function getEntities2()
{
return $this->hasMany(Entity2::className(), ['id' => 'entity2_id']);
}
public function getEntities3()
{
return $this->hasMany(Entity3::className(), ['id' => 'entity3_id'])->via('entities2');
}
我可以找到一种方法,如下所示:
$entities3 = Entity3::find()->joinWith(['entity2.entity1'])->where('entity2.entity1_id='.$entity1_id)->all();