首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP获取关联的关联

CakePHP获取关联的关联
EN

Stack Overflow用户
提问于 2018-01-19 19:23:18
回答 1查看 46关注 0票数 0

我有一个提供表,即belongsTo产品表。Products表belongsTo Markups表(带有外键: markup_id)。

现在,当我尝试这段代码时:

代码语言:javascript
复制
$offersObject = $this->paginate($this->Offers->find('all')
                ->contain('Products');

我得到的结果是:

代码语言:javascript
复制
Array
(
    [0] => App\Model\Entity\Offer Object
        (
            [id] => 1
            [store_id] => 1
            [product_id] => 1
            [price] => 150
            [new_price] => 0
            [status] => 1
            [twid] => 70261
            [magkod] => MAG
            [product] => App\Model\Entity\Product Object
                (
                    [id] => 1
                    [name] => BOSCH S3 41Ah 360A S3001
                    [markup_id] => 3
                    [created] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2018-01-08T14:30:38+00:00
                            [timezone] => UTC
                            [fixedNowTime] => 
                        )

                    [modified] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2018-01-08T14:30:38+00:00
                            [timezone] => UTC
                            [fixedNowTime] => 
                        )


                    [[repository]] => Products
                )
        )

问题是我从字面上得到了markup_id,我需要的是Products表中的相关行。

在我的OffersTable.php上:

代码语言:javascript
复制
    $this->belongsTo('Products', [
        'foreignKey' => 'product_id',
        'joinType' => 'INNER'
    ]);

ProductsTable.php

代码语言:javascript
复制
    $this->hasMany('Offers');

    $this->belongsTo('Markups', [
        'foreignKey' => 'markup_id',
        'joinType' => 'INNER'
    ]);

请给我建议。或要求任何澄清。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 19:45:40

您可以使用嵌套数组加载嵌套关联:

代码语言:javascript
复制
$offersObject = $this->paginate($this->Offers->find('all')
                ->contain([
                    'Products' => [
                        'Markups'
                    ]
                ]);

或者,您可以使用点符号来表示嵌套关联:

代码语言:javascript
复制
$offersObject = $this->paginate($this->Offers->find('all')
                    ->contain([
                        'Products.Markups'
                    ]);

Eager Loading Associations Via Contain

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

https://stackoverflow.com/questions/48340008

复制
相关文章

相似问题

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