CakePHP连接两个表之间的模型,两次

时间:2009-09-07 05:13:34

标签: php cakephp entity-relationship cakephp-appmodel

我有一个问题,关于如何在两个不同的问候中彼此加入时建立两个模型之间的关系。

我将举例说明我遇到的问题:

Users (id, name)
Messages (id, message, from_user_id, to_user_id)

(在我的情况下,它不是用户或消息,但希望以更简单的方式说明问题)

用户可以相互发送消息,每封消息都有一位发送消息的用户和一位将接收消息的用户。我想弄清楚模型关系:

class User extends AppModel {
    var $hasMany = array("Message");
}

class Message extends AppModel {
    var $belongsTo = array("User");
}

我也不确定如何在数据库中命名字段,因此CakePHP将正确地获取关系。

1 个答案:

答案 0 :(得分:5)

我已经能够通过关系选项解决这个问题:

class Message extends AppModel {
    var $belongsTo = array(
        "FromUser" => array(
              "className" => "User"
            , "foreignKey" => "from_user_id"
            , "type" => "INNER"
        ),
        "ToUser" => array(
              "className" => "User"
            , "foreignKey" => "to_user_id"
            , "type" => "INNER"
        )
    );
}

class User extends AppModel {
    var $hasMany = array(
        "MessageFrom" => array(
              "className" => "Message"
            , "foreignKey" => "from_user_id"
        ),
        "MessageTo" => array(
              "className" => "Message"
            , "foreignKey" => "to_user_id"
        )
    );
}

This question and answer也很有帮助!