我有 3 个模型
MktingCampaign
Campaign
IvrNumber
MktingCampaign
hasManyCampaign
和Campaign
hasOne IvrNumber
。
我正在尝试模拟此查询-
select * from mkting_campaign
join campaign on mkting_campaign.id = campaign.mkting_campaign_id
join ivr_numbers on campaign.id = ivr_numbers.campaign_id
where campaign.status = 1 and ivr_numbers.status = 0;
它的作用是获取 mkting_campaigns 的campaigns.status = 1 and ivr_numbers.status = 0
.
我写了这个,
$this->MktingCampaign->find('all',array(
'contain' => array(
'Campaign' => array(
'conditions' => array('Campaign.status' => 1),
'IvrNumber' => array(
'conditions' => array(
'IvrNumber.status' => 0
)
)
)
)
));
它返回所有 mkting_campaigns 并用满足上述状态条件的活动和 ivrnumber 填充 mkting_campaigns。但我只想要满足上述条件的 mkting_campaigns(不是所有 mkting_campaigns)
我这里有两个解决方案
- 我可以改用连接。但这是一个好习惯吗?
- 我必须对结果实施一些逻辑来过滤不需要的结果,
mkting_Campaigns
但是没有更好的方法来修改查询以仅获得所需的结果吗?
请帮忙
谢谢