【问题标题】:CakePHP hasMany - belongsTo - hasMany relationshipCakePHP hasMany - belongsTo - hasMany 关系
【发布时间】:2011-08-18 12:08:59
【问题描述】:

我有一个更复杂的系统... 我有

  • 用户模型 - hasMany Ads
  • 广告模型 - hasMany "placads"
  • placads 模型 - 属于广告和地点
  • 放置模型 - hasMany placads

现在我像这样运行查询:

    $this->set(
        'ad',
        $this->User->Ad->find(
            'all',
            array(
                'conditions' => array('Ad.user_id' => $this->Auth->user('id'))
            )
        )
    );

我得到这个没有“Place”在*标记

[0] => Array
    (
        [Ad] => Array
            (
                [id] => 1
                [user_id] => 1
                [name] => bota
            )

        [Placad] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [ad_id] => 1
                        [place_id] => 1
                        [count] => 10
                        *[Place] => Array
                        (
                            info about place
                        )*
                    )

                [1] => Array
                    (
                        [id] => 2
                        [ad_id] => 1
                        [place_id] => 2
                        [count] => 20
                        *[Place] => Array
                        (
                            info about place
                        )*
                    )

            )

    )

我应该怎么做才能得到像我写到 * 标记的东西?

提前致谢!

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    使用递归:

    http://book.cakephp.org/view/1063/recursive

    $this->User->Ad->recursive = 2; // before find
    

    或者:

    $this->User->Ad->find( 'all', 
        array(
            'recursive' => 2,
            'conditions' => array('Ad.user_id' => $this->Auth->user('id'))
        )
    )
    

    数字 2 是一个例子,但在你的情况下应该这样做

    第二种选择:

    使用包容性

    http://book.cakephp.org/view/1323/Containable

    【讨论】:

    • 愿原力与面包师同在! :) 可包含是很棒的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2015-12-22
    • 1970-01-01
    • 2015-11-29
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多