2011-07-07 31 views
0

当您查看电影时,我想要显示剧院组织的放映时间(电影时间表)。我可以得到所有的数据只是罚款,但它与每一个MovieTime这样返回剧场数据:检索按剧院分组的电影放映时间:电影 - >放映时间< - CakePHP中的剧院

[0] => 
    [Movie] => 
     [name] => Herp de Derp 
    [MovieTime] => 
     [0] => 
      [datetime] => 2011-07-06 18:30:00 
      [Theater] => 
       [name] => Awesome Cinemas 
       [address] => 1234 Street Ln 
     [1] => 
      [datetime] => 2011-07-06 20:30:00 
      [Theater] => 
       [name] => Awesome Cinemas 
       [address] => 1234 Street Ln 
     [2] => 
      [datetime] => 2011-07-06 20:30:00 
      [Theater] => 
       [name] => Crappy Movies 10 
       [address] => 678 Avenue St 

你可以想像,有重复的与剧院数据一吨。

有没有办法我能得到这个相同的数据,而是让与其中的movie_times这样分组的数据剧院?:

[0] => 
    [Movie] => 
     [name] => Herp de Derp 
    [Theater] => 
     [0] => 
      [name] => Awesome Cinemas 
      [address] => 1234 Street Ln 
      [MovieTime] => 
       [0] => 
        [datetime] => 2011-07-06 18:30:00 
       [1] => 
        [datetime] => 2011-07-06 20:30:00 
       [2] => 
        [datetime] => 2011-07-06 22:30:00 

     [1] => 
      [name] => Awesome Cinemas 
      [address] => 1234 Street Ln 

我协会有以下几种:

Movie hasMany MovieTime 
MovieTime belongsTo Movie 

Theater hasMany MovieTime 
MovieTime belongsTo Theater 

正如你所看到的,电影和剧院之间没有直接的联系 - 它使用MovieTime作为中介。这些关联是合乎逻辑的(至少对我来说) - 但是如果我必须将它们改变为不同的(但也是合乎逻辑的)设置,我当然愿意听到它。

我使用这个现在把我的数据:

 $data = $this->find("first", array(
      'conditions' => array(
       array('Movie.slug' => $slug) 
      ), 
      'fields' => array('id', 'name', 'slug', 'url', 'runtime'), 
      'contain' => array(
       'MovieTime' => array(
        'fields' => array('datetime', 'screen_number'), 
        'Theater' => array(
         'fields' => array('id', 'slug', 'name', 'address', 'phone'), 
         'City' => array(
          'fields' => array('id', 'name', 'st') 
         ), 
        ), 
       ), 
      ), 
     ) 
    ); 

回答

0

尝试GROUP BY。你只需要添加'组'=>'放在这里de Model.Id'到你的发现。

试试这个:

$data = $this->find("first", array(
      'conditions' => array(
       array('Movie.slug' => $slug) 
      ), 
      'fields' => array('id', 'name', 'slug', 'url', 'runtime'), 
      'contain' => array(
       'MovieTime' => array(
        'fields' => array('datetime', 'screen_number'), 
        'group' => 'Theater.id', 
        'Theater' => array(
         'fields' => array('id', 'slug', 'name', 'address', 'phone'), 
        'City' => array(
         'fields' => array('id', 'name', 'st') 
        ), 
        ), 
       ), 
      ), 
     ), 
    ); 

欲了解更多信息,请查看此两个链接:

+0

当我这样做,我得到:U在'字段列表'中已知列'Theater.id' – Dave

+0

剧院是我的模型名称,id是主键。我不想通过MovieTime.id进行分组 - 这与我想要的相反。 – Dave

+0

我改变了我的第一个答案,试试。 –