从评论中获取一些额外信息

时间:2012-09-07 23:54:36

标签: cakephp model

所以,我有一个CakePHP的基本成员系统。他们可以发布内容,我想添加一个评论系统。

所以我在数据库中创建了表格,并且模型和用户/帖子/评论以这种方式链接:

用户模型:

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'
        )
    )
)

但是,我更喜欢。我想知道是否有一种简单的方法来获得关于发表评论的用户的一些额外信息(比如他的昵称和他的邮件)?是否有建设方式?

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到。

'recursive' => 2来电中设置find()。这种方法的问题在于它会带来来自二级关联的所有数据,这可能太多了。

2-使用Containable behavior,尝试以下内容:

$this->Post->find('first', array('conditions' => array('Post.id' => 1), 'contain' => array('User', 'Comment', 'Comment.User')));