1

2つの異なる点で互いに結合するときに、2つのモデル間の関係をどのように設定するかについて質問があります。

私が抱えている問題の例を挙げましょう:

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が関係を適切に取得できるように、データベースでフィールドにどのように名前を付ける必要があるのか​​わかりません。

4

1 に答える 1

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"
        )
    );
}

この質問と回答も非常に役に立ちました!

于 2009-09-07T06:37:33.807 に答える