すべてのモデルでこのように、A から yii2 を開始したときに、B から C へ、および C から D への接続で B と関係を持たなければならないときに、同様の問題が発生しました。したがって、関数は A で次のようになります (私は id_A であるモデルのメイン ID に追加しました):
public function B
{
return $this->hasMany(B::className(), ['a_id' => 'id_A'])
}
同じことが B から C にも当てはまります。モデル B には次のものがあります。
public function C
{
return $this->hasMany(C::className(), ['id_C' => 'c_id'])
}
この接続C::className(), ['id_C' => 'c_id']
は、必要な次のモデルの列から、現在のこのモデルへの接続であることを忘れないでください。データを関連付ける必要があります。この後、アプリにメイン モデル ( A ) の検索モデルを設定する必要があります。検索はこのように見える必要があります。最初に、検索モデルに追加します。
public $id_C
Public $c_id ...
他のモデルから追加するすべての変数。そして、この後、それらを最初の行に追加します
public function rules()
{
return [
[[......, 'id_C','c_id'...(all var you need) ]]
.....] }
それらをすべて最初の行に追加した後(安全になります)に移動します
public function search($params)
{ $query = A::find()
->select(...)
->where (...)
->joinWith(B)->joinWith(A.B)->joinWith(A.B.C).... how many you need.
;