我的预订模型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);
怎么回事???????? ...
答案 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匹配的所有预订。
我发布的查询是查找所有匹配的预订,然后包含相关的个人资料。