如何在yii2中的不同表上获得两个左连接?

时间:2016-12-21 15:01:09

标签: mysql json yii2

我有3张桌子(公司,服务,参数)。 表格之间的关系如下: 一家公司有很多服务, 服务有很多参数, 服务属于一家公司。 我试图通过params加入公司的服务和服务,并将其作为json返回。

我的代码是:

$query = Companies::find()
            ->joinWith('services')
            ->leftJoin('params', '`services`.`id` = `params`.`serviceid`')
            ->asArray()->all();
return $query;  

然而,在json中我获得了公司和服务之间的关系,但服务和参数之间的关系却没有。

如果这有助于这是我得到的json: json file

任何人都可以帮助我吗? 看起来我错过了一些基本的东西但却无法弄清楚它是什么。 感谢

2 个答案:

答案 0 :(得分:0)

您是否也建立了这些模型之间的关系?它使用起来要容易得多,特别是如果你需要在一个以上的地方使用这种关系。

Yii2 - Working with Relational Data

然后只使用ActiveQuery with() method

答案 1 :(得分:0)

我找到了解决方案。这是一个嵌套的关系问题,而不是:

$query = Companies::find()
            ->joinWith('services')
            ->leftJoin('params', '`services`.`id` = `params`.`serviceid`')
            ->asArray()->all();
return $query;

查询应如下所示:

$query = Companies::find()
            ->with('services.params')
            ->asArray()->all();
return $query;

如果在模型中正确设置,Yii2会自动理解嵌套关系。 感谢此帖Nested relations using `with` in yii2

干杯!