如何使用嵌套列使用with()方法和where()方法


How can I use with() method and where() method using nested columns?

有一个这样的结构:

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();