CakePHP上有一个子类型

CakePHP上有一个子类型,cakephp,cakephp-2.0,has-one,subtype,Cakephp,Cakephp 2.0,Has One,Subtype,我的数据库中有3个用户表: 用户 users\u twitter 用户\u网络 用户是Users\u twitter和Users\u web的家长 然后是另一个评论表。这两类用户都可以发表评论 因此,当我想显示评论时,我需要获得每个评论作者的信息。 为此,我在/Model/Comment.php上使用变量$belongsTo,如下所示: public $belongsTo = array( 'users' => array( 'foreignKey' =>

我的数据库中有3个用户表:

  • 用户
  • users\u twitter
  • 用户\u网络
用户是
Users\u twitter
Users\u web
的家长

然后是另一个评论表。这两类用户都可以发表评论

因此,当我想显示评论时,我需要获得每个评论作者的信息。 为此,我在
/Model/Comment.php
上使用变量
$belongsTo
,如下所示:

public $belongsTo = array(
    'users' => array(
        'foreignKey' => 'idUser'
    )
);
在Controller/CommentController中,执行此操作时:

public function index($idPost) {
    $this->Comment->recursive = 0;
    return $this->Comment->find('all');
}
我得到了这种数组:

[0] => Array
        (
            [Comment] => Array
                (
                    [id] => 1
                    [idPost] => 441
                    [idUser] => 387371023
                    [comment] => hello word
                    [created] => 2012-03-01 00:00:00
                )

            [User] => Array
                (
                    [id] => 1
                    [username] => myname
                )
        )
我想要的是获得更多的信息,用户的子类型之一,取决于子类型表上ID的存在

如果它是一个user_web表的id,我希望得到以下信息:

[0] => Array
        (
            [Comment] => Array
                (
                    [id] => 1
                    [idPost] => 441
                    [idUser] => 387371023
                    [comment] => hello word
                    [created] => 2012-03-01 00:00:00
                )

            [User] => Array
                (
                    [id] => 1
                    [username] => myname
                    [users_web] =>  Array
                        (
                            [id] => 1
                            [username] => myName
                            [password] => XXXXX
                            [verified] => 1
                            [created] => 1
                        )
        )
你知道CakePHP是否可以做到这一点吗? 据我所知,使用
$hasOne
我只获得了一个级别,我需要两个级别。

在您的AppModel中添加

public $actsAs = array('Containable');
在您的索引中:

public function index($idPost) {
    return $this->Comment->find('all', array(
        'contain' => array('User.UsersWeb')));
}
您的用户模型必须与UsersWeb模型相关联,才能实现此功能

有关完整说明,请参阅

另外,为什么返回控制器索引中的数据?您正在为此使用requestAction吗?为什么不使用分页呢?你真的想在一个页面上显示数百条评论吗


请参见

谢谢,它成功了!!关于我为什么还它,这只是一个例子。我通常使用$this->set;)