【问题标题】:Cant' get all User Data from HABTM in cakephp无法在 cakephp 中从 HABTM 获取所有用户数据
【发布时间】:2013-06-22 11:24:53
【问题描述】:

我已经花了三天时间解决这个问题,但已经走到了死胡同,无法继续。我知道如何使用非 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 表

(表演者:id|name|image|created|modified) (四边形:id|user_id|等.....) (performers_quads:id|performer_id|quad_id)

MY Profiles Controller 索引方法

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 中获取属于用户的 Quads 的执行者。对此的任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案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 隧道....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2023-03-23
      • 2014-06-16
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多