$query = Routes::find()
->from(['r' => Routes::tableName()])
->with(['city', 'routesCities', 'price'])
->joinWith([
'city' => function(ActiveQuery $query){
$query->from(['rc1' => Cities::tableName()]);
}
])
->groupBy('id');
$query->andFilterWhere([
'r.id' => $this->id,
'r.number' => $this->number,
'r.tariff' => $this->tariff,
'r.created_at' => $this->created_at,
'r.updated_at' => $this->updated_at,
'r.status' => $this->status,
'rc1.id' => $this->city_id,
]);
$query->andFilterWhere([
'id' => $this->id,
'parent_id' => $this->parent_id,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
]);
Просто для расширение вопросов может быть не 4 а чуть больше