Yii2:将子表连接到两个父表

时间:2017-12-09 04:54:54

标签: yii yii2

我有两个父表和一个这种格式的子表 -

A - a_id,a_name(父母) B - b_id,b_name(父) C - c_id, a_id,b_id

  • 援助和出价是表C中的外键。

我正在尝试从模型A开始创建一个dataProvider,并希望将C连接到图片,使代码看起来像

$查询 - > joinWith([B,的 A和B.C

但我不知道如何使用Yii2标准为给定查询使C连接到A和B.任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

要通过多个JOIN模型使用Yii2制作DataProvider,您可以使用简单:

$results = $tableADataProvider->joinWith(['cRelation.bRelation')
                              ->where([...]);

当然,在ADataProvider中,您需要与C表关联,在此示例中为cRelationC表{{1}你需要与DataProvider table B有关系。

另外要提及的是,如果您不使用bRelation条款中BC条中的任何列,只是想要从WHERE检索结果那么使用B通过另一个查询获取数据会好得多。这种方式即使它们是数据透视表,您也可以获得表$tableADataProvider->with([...])的正确计数。

值得注意的是,如果表格是数据透视表,您可能无法获得正确的计数(计数)。

(数据透视表是一个包含多条记录的表,其中包含与其他表相同的唯一键)