cakephp包含两个模型关联



我必须从posts表中提取数据

其具有CCD_ 2(
category_idcategories.id的引用
CCD_ 5参考CCD_,updated_by参考users.id)

我可以提取created_by username,但不能同时提取

$this->Post->Behaviors->load('Containable');
        $this->paginate = array(
            'conditions' => array('Post.category_id' => $id),
            'order' => array('title'),
            'contain' => array(
                'User'=>array(
                        'fields'=>array('id','first_name','last_name','username'),
                        'conditions' => array('User.id = Post.created_by')
                    ),
                //posts table has 2 fields(created_by & updated_by) associated with users table
                //'User'=>array(
                //        'fields'=>array('id','first_name','last_name','username'),
                //        'conditions' => array('User.id = Post.updated_by')
                //    ),
                'Category'=>array(
                    'Type'=>array(
                        'fields'=>array('id','type_name')
                        )
                    ),
            )
        );

//后模型

 public $belongsTo = array(
    'User'=> array(
        'className' => 'User',
        'foreignKey' => 'created_by',
        'foreignKey' => 'updated_by'
    ),
); 

//用户模型

public $hasMany = array(
    'Post' => array(
        'className' => 'Post',
        'foreignKey' => array('created_by','updated_by'),
    ),
);

如何将两个用户都显示为(created_by&updated_by

首先需要在Post模型中定义两个关系

public $belongsTo = array(
    'CreatedUser'=> array(
        'className' => 'User',
        'foreignKey' => 'created_by'
    ),
    'UpdatedUser'=> array(
        'className' => 'User',
        'foreignKey' => 'updated_by'
    )
);

现在在用户模型中创建反向关系。

public $hasMany = array(
    'CreatedPosts' => array(
        'className' => 'Post',
        'foreignKey' =>'created_by'
    ),
    'UpdatedPosts' => array(
        'className' => 'Post',
        'foreignKey' => 'updated_by'
    ),
);

然后find()

$this->Post->Behaviors->load('Containable');
$this->paginate = array(
        'conditions' => array('Post.category_id' => $id),
        'order' => array('title'),
        'contain' => array(
            'CreatedUser'=>array(
                    'fields'=>array('id','first_name','last_name','username')
                ),
            'UpdatedUser'=>array(
                    'fields'=>array('id','first_name','last_name','username')
                ),
            'Category'=>array(
                'Type'=>array(
                    'fields'=>array('id','type_name')
                    )
                ),
        )
    );

最新更新