首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CakePHP 3.xORM中跨多个表进行查询

在CakePHP 3.xORM中跨多个表进行查询
EN

Stack Overflow用户
提问于 2014-12-10 01:06:17
回答 1查看 782关注 0票数 0

我有三张桌子--国家、城市和地址。他们的关系是国家hasMany城市,城市hasMany地址。就像这个国家->城市->地址。

如果我想得到某个城市的所有地址,我可以这样做

代码语言:javascript
复制
$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

EN

回答 1

Stack Overflow用户

发布于 2014-12-11 00:23:27

我想你是在寻找这样的东西(从医生那里):

代码语言:javascript
复制
    <?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不要尝试生成实体。如果要生成实体,请尝试删除该部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27391760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档