【问题标题】:Associations not working in Cakephp关联在 Cakephp 中不起作用
【发布时间】:2013-02-12 14:46:21
【问题描述】:

我有以下表格

文章


Id标题描述图片作者发布创建

评论


Id user_id article_id 已创建文本

用户


Id 登录名电子邮件传递

我希望 文章Comments 相关,而 CommentsUsers 相关,但我不能。但是我有以下模型。

文章

<?php

/**
* Model de artigos
*/
class Article extends AppModel {

    public $name = 'Article';

    public $hasMany = array(
                            'Comment' => array(
                                                'className' => 'Comment',
                                                'dependent' => false,
                                                'fields' => array('Comment.user_id','Comment.created','Comment.text'),
                                                'foreignkey' => 'article_id',

                                                )
                            );

    /**
    * Regras de validação
    *
    * @var array
    */
    public $validate = array();

    /**
    * Lista dos artigos mais recentes
    *
    * @param int $limit Quantidade de artigos
    * @param array $params Parâmetros extras de busca
    *
    * @return array
    */
    public function recent($limit = 5, $params = array()) {
        $params = Hash::merge(array(
        'conditions' => array('Article.published' => true),
        'order' => array('Article.created' => 'DESC'),
        'limit' => $limit
        ), $params);

        return $this->find('all', $params);
    }

}

评论

<?php

/**
* Model de comentários
*/
class Comment extends AppModel {

    public $name = 'Comment';

    public $belongsTo = array(
                            'User' => array(
                                            'className' => 'User',
                                            'foreignKey'   => 'user_id',
                                            'type'  => 'left'
                                            )
                             );

    /**
    * Regras de validação
    *
    * @var array
    */
    public $validate = array();

    /**
    * Lista dos comentários mais recentes
    *
    * @param int $limit Quantidade de comentários
    * @param array $params Parâmetros extras de busca
    *
    * @return array
    */
    public function recent($limit = 5, $params = array()) {
        $params = Hash::merge(array(
            'conditions' => array('Comment.published' => true),
            'order' => array('Comment.created' => 'DESC'),
            'limit' => $limit
        ), $params);

        return $this->find('all', $params);
    }

}

用户

/**
* Model de usuários
*/
class User extends AppModel {

    public $name = 'User';

    /**
    * Regras de validação
    *
    * @var array
    */
    public $validate = array();

}

我只能将文章评论联系起来,但我不能将评论用户联系起来。我需要做什么?感谢您的帮助。

【问题讨论】:

  • 如果您想从Article 模型中的recent() 方法查询文章、cmets 和用户,您应该在$params 数组中将recursive 属性设置为2。查看 CakePHP 文档中的 Recursive

标签: php cakephp cakephp-2.0


【解决方案1】:

您需要将$hasMany 添加到用户模型中。

/**
* Model de usuários
*/
class User extends AppModel {

    public $name = 'User';
    public $hasMany = array(
        'Comment' => array(
            'className' => 'Comment',
            'dependent' => false,
            'fields' => array('Comment.user_id','Comment.created','Comment.text'),
            'foreignkey' => 'user_id',
        )
    );
    /**
    * Regras de validação
    *
    * @var array
    */
    public $validate = array();

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多