CakePHP:表连接

时间:2012-10-03 11:47:51

标签: mysql cakephp

我是CAKEPHP的新手,并且是第一次使用联接。我也阅读了文档。

现在我有两个型号,一个用于用户,另一个用于状态。

在状态表中,我有一个外键,即用户表中的用户ID。

我想使用$ hasMany条件,如果登录用户共享状态,它应该更新外键中具有UID的状态表,UID是Users表主键

我不知道该怎么做以及如何做到这一点。

我相信它应该是这样的

class User extends AppModel 
{    
    var $name = 'User';    
    var $hasMany = array(
    'Status' => array( 
    'conditions' => array('Status.FK' => 'User.id') 
       )
    );
}

希望我做得对吗?

1 个答案:

答案 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)));