当密钥为$ slug时,如何使用cakePHP

时间:2014-02-03 15:32:56

标签: cakephp containable

我有一个有许多照片的画廊模型,在我的画廊视图中我通过$ slug找到画廊。我正在显示属于特定gallery_id的所有照片。这是按预期工作的。

但是,我想在查询中添加一个条件,如果photo.active =>只返回照片。 '是'。

我发现因为画廊视图是由$ slug找到的,我过滤照片的尝试不起作用。在照片模型中,我保存了gallery_id而不是gallery.slug。

我尝试在图库控制器中使用可包含但是在使用此控制器时遇到以下错误:

    $galleryphotos = $this->Gallery->Photo->find('all', array(
    'contain' => array('Photo'),
    'conditions' => array(
        'gallery.slug'=> $slug,
        'photo.active'=>'yes')));   

我在视图中出错:

Warning (512): Model "Photo" is not associated with model "Photo"

在照片模型中添加一个gallery.slug列是查询具有条件的照片的最佳方式吗?

另外,为什么在gallery控制器中使用containsable时会出现错误?

干杯,保罗

1 个答案:

答案 0 :(得分:0)

您尝试将Photo模型添加到您要查询的Photo模型中,因此请尝试:

$galleryphotos = $this->Gallery->find('first', array(
    'contain' => array('Photo'),
    'conditions' => array(
        'Gallery.slug'=> $slug,
        'Photo.active'=>'yes')));  

或者

$galleryphotos = $this->Gallery->Photo->find('all', array(
    'contain' => array('Gallery'),
    'conditions' => array(
        'Gallery.slug'=> $slug,
        'Photo.active'=>'yes')));

假设关联是Gallery hasMany Photo

这应该在模型内部,而不是控制器,这样你就可以让你的控制器变瘦,只需调用$this->Gallery->view($slug);来获取数据。