使用hasandbelongstomany模型作为条件

时间:2018-01-25 20:58:31

标签: cakephp has-and-belongs-to-many

我的预订模型hasAndBelongsToMany个人资料模型。 我想使用Reservation.item_id = $ id查找个人资料 当我获得数据时,数据显示Profile中的所有数据。

$profiles = $this->Profile->find('all', array(  
        'contain' => array(
            'Reservation' => array(
                'conditions' => array('Reservation.item_id' => $id)
            )
        ),
        'order' => 'Profile.order ASC'
    ));
print_r($profiles); 

怎么回事???????? ...

2 个答案:

答案 0 :(得分:1)

要按关联的模型数据查找实体,可以使用matching():

$profiles = $this->Profiles->find()
    ->contain(["Reservations"])
    ->matching("Reservations",function($q) use ($id) {
        return $q->where(["Reservations.item_id" => $id]);
    })
    ->all();

有关匹配()的更多信息:Filtering by associated data

答案 1 :(得分:0)

假设您的意思是即使您想要的所有配置文件都只是一组子配置文件,这些配置文件可以保留适当的项目,那么您需要做的就是下面的查询。

$profiles = $this->Profile->Reservation->find('all', array(  
    'contain' => array(
        'Profiles'
    ),
    'conditions' => array('item_id' => $id),
    'order' => 'Profile.order ASC'
);

您在查询中说的是找到所有个人资料并包含与商品ID匹配的所有预订。

我发布的查询是查找所有匹配的预订,然后包含相关的个人资料。