2012-08-15 85 views
0

我知道如果选择单个条目,我可以通过模型关联轻松找到相关的模型数据。但是,当我使用find('all')作为索引页面时,我想要做的是将第一张图像作为Galery的缩略图。Cakephp 2.x找到相关模型的第一个条目

我的关系(画廊被命名为相册)是:

//Album-Model 
public $hasMany = array(
    'Picture' => array(
     'className' => 'Picture', 
     'foreignKey' => 'album_id', 
     'dependent' => true, 
     'conditions' => '' 
    ) 
); 

和:

public $belongsTo = array(
    'User' => array(
     'className' => 'User', 
     'foreignKey' => 'user_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    'Album' => array(
     'className' => 'Album', 
     'foreignKey' => 'album_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ) 
); 

回答

2

编辑: 这应该工作,我测试了我自己!

在查询之前添加以下泳道以指定递归性。

$this->Albums->recursive = 1; 
$this->set('Albums', $this->Album->find('all')); 

这样,它也会发送图片数据。然后在你的模型关联中,你可以指定只返回第一张图片与相册,如果这是你想要的!

只需在您的hasMany => Comments数组中添加'limit' => '1',即可。

然后你就可以在您的视图做

foreach($Albums as $Album){ 
    $Album['Album']; // ALBUMS info do whatever 
    $Album['Picture']; // The thumbnail 
} 

EDIT2迭代:我刚刚看你也可以做

$this->Album->find('all', array('recursive' => 1)); 
+0

我知道,但我想找到它所有的画廊时 - 例如 - 使用:$ this-> Album-> find('all'); – 2012-08-15 20:15:36

+0

当我使用find('all')时,没有与模型相关的图片。只有当我使用>> $ this-> set('album',$ this-> Album-> read(null,$ id))<<。这就是为什么我认为我的modell设置正确。也许它显示这种行为来节省内存? – 2012-08-15 20:32:46

+0

这应该现在工作 – 2012-08-15 21:02:38