无法从cakephp中获取HABTM的所有用户数据

时间:2013-06-22 11:24:53

标签: cakephp has-and-belongs-to-many

我花了三天时间处理这个问题,但已经走到了尽头,无法继续。我知道如何使用非cakephp方法获取所需的数据,但我更喜欢使用cakephp的模型关系。

我的模特

class User extends AppModel {
   var $hasOne = 'Profile'; 
   }


class Profile extends AppModel {
    var $belongsTo = 'User'; 
    var $hasAndBelongsToMany = array('Quad' => array('className' => 'Quad'));
   }


class Quad extends AppModel{
   var $belongsTo = 'User';
   var $hasAndBelongsToMany = array ('Performer' => array ('className' =>'Performer'));
   }


class Performer extends AppModel {
   var $name = 'Performer';
   var $hasAndBelongsToMany = array('Quad' => array('className' => 'Quad'));
  }

我的HABTM表格

(perfomers:ID |名称|图像|创建|修改) (四边形:ID | user_ID的|等.....) (performers_quads:ID | performer_id | quad_id)

我的个人资料控制器索引方法

public function index($uid) {
    $user = $this->Profile->User->find('all', array(
                                'contain' => array(
                                'Quad' => array('contain'=>array('Performer'))),
                                'conditions' => array(
                                'User.id' => $uid)));                                 

    $this->set(compact('user'));
  }

我的结果数组

UserArray ( 
            [0] => Array ( 
                     [User] => Array ( 
                                [id] => 19 
                                [email] => *****@gmail.com 
                                [password] => *** 
                                [created] => 2013-06-13 23:35:42 
                                [modified] => 2013-06-13 23:35:42 ) 

                     [Profile] => Array ( 
                                   [id] => 21 
                                   [user_id] => 19 
                                   [username] => **** 
                                   [first_name] => ****
                                   [last_name] => **** 
                                   [imageId] => ****.jpg 
                                   [created] => 2013-06-13 23:35:43 
                                   [modified] => 2013-06-17 01:05:22 ) 

                     [Quads] => Array ( 
                                   [0] => Array ( 
                                          [id] => 65 [user_id] => 19 
                                          [title] => Test Event 
                                          [date] => 2013-06-15 16:53:00 
                                          [price] => 25.00 
                                          [venueID] => 1 
                                          [created] => 2013-06-17 01:05:22 ) 

                                   [1] => Array ( 
                                          [id] => 66 
                                          [user_id] => 19 
                                          [title] => Test Event 2 
                                          [date] => 2013-06-12 17:12:00 
                                          [price] => 50.00 
                                          [venueID] => 1 
                                          [created] => 2013-06-17 01:05:22 ) ) ) )

我需要什么

  UserArray ( 
            [0] => Array ( 
                     [User] => Array ( 
                                [id] => 19 
                                [email] => *****@gmail.com 
                                [password] => *** 
                                [created] => 2013-06-13 23:35:42 
                                [modified] => 2013-06-13 23:35:42 ) 

                     [Profile] => Array ( 
                                   [id] => 21 
                                   [user_id] => 19 
                                   [username] => **** 
                                   [first_name] => ****
                                   [last_name] => **** 
                                   [imageId] => ****.jpg 
                                   [created] => 2013-06-13 23:35:43 
                                   [modified] => 2013-06-17 01:05:22 ) 

                     [Quads] => Array ( 
                                   [0] => Array ( 
                                          [id] => 65 [user_id] => 19 
                                          [title] => Test Event 
                                          [date] => 2013-06-15 16:53:00 
                                          [price] => 25.00 
                                          [venueID] => 1 
                                          [created] => 2013-06-17 01:05:22

                                          [Performer] => Array(
                                                           [0] => Array(
                                                                    [id] => ***
                                                                    [name] => ****
                                                                     etc....))) 

                                   [1] => Array ( 
                                          [id] => 66 
                                          [user_id] => 19 
                                          [title] => Test Event 2 
                                          [date] => 2013-06-12 17:12:00 
                                          [price] => 50.00 
                                          [venueID] => 1 
                                          [created] => 2013-06-17 01:05:22

                                          [Performer] => Array(
                                                           [0] => Array(
                                                                    [id] => ***
                                                                    [name] => ****
                                                                     etc....)))))))

我想要完成的是在ProfilesController中将Performers属于属于User的Quads。任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这就是我最终解决问题的方法

<强>型号:

class AppModel extends Model {
 var $actsAs = array(
 'Containable');    
}


class Performer extends AppModel {
 var $name = 'Performer';
}


class Quad extends AppModel {
 var $belongsTo = 'User';
 var $hasAndBelongsToMany = array ('Performer');
}


class Profile extends AppModel {
 var $belongsTo = 'User'; 
}


class User extends AppModel {
 var $hasOne = 'Profile';
 var $hasMany = 'Quad';
}

在配置文件控制器中:

public function index($uid)
{
    $user = $this->Profile->User->find('all', array(
                     'contain' => array('Quad' =>array('Performer'), 'Profile'),
                     'conditions' => array('User.id' => $uid)));

    $this->set(compact('user'));
}

和结果:

  UserArray
 (
    [0] = Array
    (
        [User] = Array
            (
                [id] = 19
                [email] = *****@gmail.com
                [password] *****
                [created] = 2013-06-13 23:35:42
                [modified] = 2013-06-13 23:35:42
            )

        [Profile] = Array
            (
                [id] = 21
                [user_id] = 19
                [username] = ******** 
                [first_name] = *********
                [last_name] = ********** 
                [imageId] = id8fkwd_b81a24524aa20f2c4156277d1b6a7c27_1371445522.jpg
                [created] = 2013-06-13 23:35:43
                [modified] = 2013-06-17 01:05:22
            )

        [Quad] = Array
            (
                [0] = Array
                    (
                        [id] = 65
                        [user_id] = 19
                        [title] = Test Event
                        [date] = 2013-06-15 16:53:00
                        [price] = 25.00
                        [venueID] = 1
                        [Performer] = Array
                            (
                                [0] = Array
                                    (
                                        [id] = 1
                                        [name] = ********
                                        [verified] = 1 
                                        [photo] = 1
                                        [photoname] = *****1370810034.jpg
                                    )

                                [1] = Array
                                    (
                                        [id] = 2
                                        [name] = ******
                                        [verified] = 1 
                                        [photo] = 1 
                                        [photoname] = ******_1370810315.jpg
                                    )

                            )

                        [created] = 2013-06-15 16:53:00
                    )

                [1] = Array
                    (
                        [id] = 66
                        [user_id] = 19
                        [title] = Test Event 2
                        [date] = 2013-06-12 17:12:00
                        [price] = 50.00
                        [venueID] = 1
                        [Performer] = Array
                            (
                                [0] = Array
                                    (
                                        [id] = 1
                                        [name] = *******
                                        [verified] = 1; 
                                        [photo] = 1 
                                        [photoname] = *****_1370810034.jpg
                                    )

                                [1] = Array
                                    (
                                        [id] = 2
                                        [name] = ******
                                        [verified] = 1 
                                        [photo] = 1 
                                        [photoname] = ******_1370810315.jpg
                                    )

                                [2] = Array
                                    (
                                        [id] = 3
                                        [name] = ********
                                        [verified] = 1 
                                        [photo] = 1 
                                        [photoname] = *****_1370812455.jpg
                                    )

                            )

                        [created] = 2013-06-15 16:53:00
                    )

            )

    )

希望这有助于其他人通过CakePHP的HABTM隧道......