0

だから、私はCakePHPで基本的なメンバーシステムを持っています. 彼らは何かを投稿することができ、私はコメントシステムを追加したいと思っています.

だから私はDBにテーブルを作り、モデルを作り、ユーザー/投稿/コメントはこのようにリンクされています:

ユーザーモデル:

public $hasMany = array("Post", "Comment");

投稿モデル:

public $belongsTo = "User";
public $hasMany = "Comment";

コメント モデル :

public $belongsTo = array("User", "Post");

そして、それはかなりうまくいくようです。投稿のコメントを正しく取得します。ここでは、投稿のデバッグです:

array(
    'Post' => array(
        'id' => '25',
        'title' => 'Rocket Club',
        'description' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam elementum sem ac sem imperdiet cursus. Quisque venenatis pulvinar ornare. Donec rutrum, lacus vel imperdiet sagittis, metus risus interdum ante, iaculis venenatis arcu nibh et odio.',
        'image' => '25-75da9db5.jpg',
        'created' => '2012-09-07 01:40:14',
        'user_id' => '19'
    ),
    'User' => array(
        'password' => '*****',
        'id' => '19',
        'username' => 'Axiol',
        'mail' => '*****',
        'firstname' => 'Arnaud',
        'lastname' => 'Delante',
        'description' => 'C'est moi le monsieur qui est derrière ce site. Dingue hein ?',
        'local' => '4420 Saint-Nicolas, Belgique',
        'twitter' => 'Axiol',
        'facebook' => 'axiol',
        'gplus' => '100906827397700671747',
        'github' => 'Axiol',
        'website' => 'http://www.axioland.me',
        'created' => '2012-09-04 02:10:31',
        'lastlogin' => '2012-09-07 01:38:44',
        'active' => '1'
    ),
    'Comment' => array(
        (int) 0 => array(
            'id' => '1',
            'content' => 'Test test d'un joli commentaire constructif et tout pour aider la personne qui a postée l'image.',
            'post_id' => '25',
            'user_id' => '19'
        )
    )
)

でも、もっと欲しい。コメントを作成したユーザーに関する追加情報 (ニックネームやメールアドレスなど) を取得する簡単な方法があるかどうかを知りたいです。ビルドイン方法はありますか?

4

1 に答える 1

2

それには2つの方法があります。

1-通話に設定'recursive' => 2しますfind()。このアプローチの問題点は、第 2 レベルの関連付けからすべてのデータを取得することであり、これは多すぎる可能性があります。

2- Containable 動作を使用し、次のようなことを試してください。

$this->Post->find('first', array('conditions' => array('Post.id' => 1), 'contain' => array('User', 'Comment', 'Comment.User')));
于 2012-09-08T02:22:32.880 に答える