订单功能的文档不够好。这就是我所拥有的:
表A< ---- MiddleTableAB ---->表B< --- MiddleTableBC --->表C
所以我有一个表B,它与表A有很多关系,并且与表C有很多关系。
我需要的是表B中的项目列表。它们需要按表A的ID分组,然后按表C的ID分组。
这就是我在表B功能中所拥有的:
$query=$this->find();
$query->contain([
'MiddleTableAB.TableA'=> function ($q) {
return $q->select(['id','name']);
},
'MiddleTableBC.TableC'=> [
'strategy' => 'select',
'queryBuilder' => function ($q) {
return $q->select(['id','name']);
},
]
]);
//$query->select(['id','description']);
$query->group(['TableA.id','TableC.id']);
$data = $query->all();
但是蛋糕说没有TableA.id。 如果我删除组呼,我将获得构建所需结果所需的所有数据。我怎样才能做到这一点?
答案 0 :(得分:0)
我道歉,因为我忽略了问题中的Cakephp版本号(即3)。请查看我的编辑内容如下:
对于Cakephp 3中的多个联接,请查看文档here
检查此示例代码:
$query = $countries->find()
->hydrate(false)
->join([
'City' => [
'table' => 'cities',
'type' => 'LEFT',
'conditions' => 'Country.id = City.country_id'
],
'Address' => [
'table' => 'addresses',
'type' => 'LEFT',
'conditions' => 'City.id = Address.city_id'
]
])
->order(['state' => 'DESC']);
在上文中,hydratate方法告诉ORM不要尝试生成实体(Check here)。如果您希望生成实体,请尝试删除该部分。