-2

私は基本的に、プロジェクト テーブルと更新テーブルの両方のユーザーとコメントを返すことで、クエリの深さを拡張しようとしています。

サイト訪問者はプロジェクトを表示でき、その下に多くの更新がリストされています。

ユーザーは、最初のプロジェクトと以下の更新の両方にコメントを残すことができ、各更新とプロジェクトは任意のユーザーによって送信されます。

次の関係を設定していますが、これらは間違っている可能性があります。

Project.php (Model)
    belongsTo           - User
    hasMany             - Update, Comment

Update.php (Model)
    belongsTo           - Project, User
    hasMany             - Comment

Comment.php (Model)
    belongsTo           - Project, Update
    hasAndBelongsToMany - User

User.php (Model)
    hasMany             - Project, Update, Comment

私の ProjectController.php のビューは次のとおりです。

public function view($id = null, $slug = null) {
    $this->Project->id = $id;
    $this->set('Projects', $this->Project->read());
}

ただし、これは以下を含む配列のみをエクスポートします。

Project
    User        (belonging to Project)
    Comments    (belonging to Project)
    Updates     (belonging to Project)

しかし、すべてのコメントとそれらのコメントのユーザーを含む、この完全な結果が欲しいです。

Project
    User        (belonging to Project)
    Comments    (belonging to Project)
        User        (belonging to each Comment)
    Updates     (belonging to Project)
        User        (belonging to Update)
        Comments    (belonging to Update)
            User        (belonging to each Update Comment)

データベースでは、コメントは 1 つの ID (user_id) によってユーザーに関連付けられており、それ以上のユーザーに関する詳細は含まれていません。

4

1 に答える 1

5

$this->Project->recursive電話する前に切り替えてみましたread()か?

Depth   Description
-1      Cake fetches Group data only, no joins.
0       Cake fetches Group data and its domain
1       Cake fetches a Group, its domain and its associated Users
2       Cake fetches a Group, its domain, its associated Users, and the Users' associated Articles

http://book.cakephp.org/1.3/view/1063/recursive

于 2012-07-10T16:24:41.997 に答える