当我从 A 开始使用 yii2 时,我遇到了类似的问题,你必须与 B、从 B 到 C 以及从 C 到 D 连接有关系,在所有型号上都是如此。所以函数在A中看起来像这样它看起来像这样(我在A模型中添加了主ID,它是id_A):
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']
是从您需要的下一个模型的列到您所在的模型的列,数据必须相关。在此之后,您需要为 app 设置主模型( A )的搜索模型。搜索必须看起来像这样。首先,您在 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.
;