cakephp包含两个模型关联
我必须从cakephp包含两个模型关联,cakephp,associations,containable,Cakephp,Associations,Containable,我必须从posts表中获取数据 其中包含外键( category\u id对categories.id的引用 由对用户id的引用创建, 由对用户id的引用更新 ) 我可以获取由用户名创建的,但不能同时获取两者 $this->Post->Behaviors->load('Containable'); $this->paginate = array( 'conditions' => array('Post.category_id
posts
表中获取数据
其中包含外键(
category\u id
对categories.id的引用
由
对用户id的引用创建,
由对用户id的引用更新
)
我可以获取由
用户名
创建的,但不能同时获取两者
$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'),
),
);
如何将两个用户同时显示和别名为(创建人
&更新人
)首先需要在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()
在Post模型中,您是否定义了Post和用户之间的两种belongsTo关系?该别名(关系名称)是用于可包含行为的别名。在编辑中添加了2个模型(Post和User)
$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')
)
),
)
);