0

我正在使用 Cakephp 1.3,但我遇到了多个 belongsTo 关系的问题。我有 3 个表库、用户、地址。

我在 2 上使用递归

用户模型:

var $belongsTo = array('address'=>array('className'=>'address','foreignKey'=>'users_id'));

图书馆模型:

var $belongsTo = array('user' => array('className'=> 'user','foreignKey'=>'user_id'));

function getUser($idBook)
    {
        $this->recursive = 2;
        return $this->find('all',
    array('conditions'=>array('library.book_id'=>$idBook),
'fields'=>array('user.id','user.nick','address.town')));
    }

它只能在没有字段参数的情况下工作,但我只想选择这 3 列。请问我的错在哪里?

4

1 回答 1

0

您可能会发现使用 Containable 更容易http://book.cakephp.org/1.3/en/The-Manual/Core-Behaviors/Containable.html我还建议使用惰性模型插件https://github。 com/Phally/lazy_model

app_model.php

App::import( 'Lib', 'LazyModel.LazyModel' );
class AppModel extends LazyModel {
    var $actsAs = array( 'Containable' );
    var $recursive = -1;    
}

用户.php

class User extends AppModel {
    var $name = 'user';
    var $belongsTo = array(
        'Address' => array(
            'className' => 'Company',
            'foreignKey' => 'users_id'
        )
    );
}

库.php

class Library extends AppModel {
    var $name = 'library';
    var $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        )
    );

    function getUser( $idBook )
    {
        return $this->find( 'all', array(
            'conditions'=>array('library.book_id'=>$idBook),
            'contain' => array(
                'user' => array(
                    'address' => array(
                       'fields' => array( ... )
                    ),
                    'fields' => array( ... )
                )
            ),
            'fields' => array( ... )
        );
    }
}
于 2014-05-03T17:03:41.707 回答