我是CAKEPHP的新手,并且是第一次使用联接。我也阅读了文档。
现在我有两个型号,一个用于用户,另一个用于状态。
在状态表中,我有一个外键,即用户表中的用户ID。
我想使用$ hasMany条件,如果登录用户共享状态,它应该更新外键中具有UID的状态表,UID是Users表主键
我不知道该怎么做以及如何做到这一点。
我相信它应该是这样的
class User extends AppModel
{
var $name = 'User';
var $hasMany = array(
'Status' => array(
'conditions' => array('Status.FK' => 'User.id')
)
);
}
希望我做得对吗?
答案 0 :(得分:3)
for hasMany将此代码放入您的用户模型中:
/**
* @see Model::$hasMany
*/
public $hasMany = array(
'Status' => array(
'className' => 'Status',
'foreignKey' => 'Status.FK',
'dependent' => true,
),
);
但最好的方法是在状态模型中使用belongsTo,因为belongsTo的查询少于hasMany方法。在控制器中,您可以使用状态模型检索具有其状态的用户。例如: 在状态模型中:
/**
* @see Model::$belongsTo
*/
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'Status.FK',
),
);
然后在您的Controller中查找数据库中的特定行,您可以使用:
$this->recursive = 1;
$this->Status->find('all',array('conditions' => array('User.id' => $id)));