我有两个父表和一个这种格式的子表 -
A - a_id,a_name(父母) B - b_id,b_name(父) C - c_id, a_id,b_id
我正在尝试从模型A开始创建一个dataProvider,并希望将C连接到图片,使代码看起来像
$查询 - > joinWith([B,的 A和B.C
但我不知道如何使用Yii2标准为给定查询使C连接到A和B.任何帮助将不胜感激。
由于
答案 0 :(得分:0)
要通过多个JOIN
模型使用Yii2制作DataProvider
,您可以使用简单:
$results = $tableADataProvider->joinWith(['cRelation.bRelation')
->where([...]);
当然,在A
表DataProvider
中,您需要与C
表关联,在此示例中为cRelation
和C
表{{1}你需要与DataProvider
table B
有关系。
另外要提及的是,如果您不使用bRelation
条款中B
和C
条中的任何列,只是想要从WHERE
检索结果那么使用B
通过另一个查询获取数据会好得多。这种方式即使它们是数据透视表,您也可以获得表$tableADataProvider->with([...])
的正确计数。
值得注意的是,如果表格是数据透视表,您可能无法获得正确的计数(计数)。
(数据透视表是一个包含多条记录的表,其中包含与其他表相同的唯一键)