我有三张桌子--国家、城市和地址。他们的关系是国家hasMany城市,城市hasMany地址。就像这个国家->城市->地址。
如果我想得到某个城市的所有地址,我可以这样做
$this->paginate = [
'contain' => ['Cities']
];
$this->set('addresses', $this->paginate($this->Addresses));如果我想把所有的城市都放在某个国家,我也可以这样做。
我想要的是我想得到某个国家的所有地址。
注意: Addresses 不包含国家的外键,而是包含在城市中的外键。
可能的查询是:SELECT a.*, c.* FROM countries a LEFT JOIN cities b ON a.id=b.country_id LEFT JOIN addresses c ON b.id=c.city_id
发布于 2014-12-11 00:23:27
我想你是在寻找这样的东西(从医生那里):
<?php
$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'
]
]);水合物方法告诉ORM不要尝试生成实体。如果要生成实体,请尝试删除该部分。
https://stackoverflow.com/questions/27391760
复制相似问题