如何设置HABTM关系的条件

时间:2014-07-26 06:14:44

标签: php cakephp

在儿童模型中,我已将此定义为HABTM关系。

public $hasAndBelongsToMany = array( 
    'Pics' => array(
        'className' => 'Pic',
        'joinTable' => 'pics_kids',
        'foreignKey' => 'kid_id',
        'associationForeignKey' => 'pic_id'
    )
);

照片,pic_url和日期以及pics_kids表等照片的Pics表商店详细信息中包含与pic和kids相关的pic_id和kid_id id。如果我必须根据kid_id和日期(图片表中的图片日期)检索记录如何检索它?

$kid_pics=$this->kid->find('all', array(
    'conditions' => array(
        'kid.id' => 1,
        'Pic.date' => '26/07/2014'
    )
));

如果我使用上面的查询,我会得到错误,其中没有列Pic.date in claue。

2 个答案:

答案 0 :(得分:0)

动态地为您的HATBM关系添加条件:

$this->Kid->hasAndBelongsToMany['Pic']['conditions'] = array(
    'Pic.date' => '26/07/2014'
) ;
$kid_pics = $this->Kid->real(null, 1) ;

答案 1 :(得分:0)

您可以使用内置的可包含行为

$this->Kid->Behaviors->load('Containable');

$kid_pics = $this->Kid->find('all', array(
    'conditions' => array(
        'Kid.id' => 1
    ),
    'contain' => array(
        'Pic' => array(
            'conditions' => array(
                'Pic.date' => '26/07/2014'
            )
        )
    )
));