【发布时间】:2011-07-07 07:34:41
【问题描述】:
当您观看电影时,我想显示剧院组织的放映时间(movie_times 表)。我可以很好地获取所有数据,但它会像这样返回每个 MovieTime 的剧院数据:
[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
您可以想象,剧院数据存在大量重复。
有没有办法我可以获得相同的数据,而是像这样获取与其中的电影时间分组的剧院数据?:
[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')
),
),
),
),
)
);
【问题讨论】:
标签: mysql cakephp associations cakephp-1.3