Cakephp 如何在获取父模型时对子模型进行查询搜索?
我有以下设置:Cakephp 如何在获取父模型时对子模型进行查询搜索?,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,我有以下设置: 这份工作有很多引文 报价单属于工作 报价单批量中有许多报价单 Batch在Batch中有许多引用 我想在以下条件下执行$this->find: Job.name或 QUOTE.QUOTE\U编号或 QUOTE.site\u文本 正在检索以下结果: 属于作业的各种作业记录和报价单以及与报价单关联的各种批次 意思是说如果我输入abc和 如果Job.name与abcabc匹配,我将显示该Job及其关联的报价单和关联的批或批 如果QUOTE.QUOTE\u编号与abcabc匹配,我
$this->find
:
- Job.name或
- QUOTE.QUOTE\U编号或
- QUOTE.site\u文本
- 如果Job.name与abc
匹配,我将显示该Job及其关联的报价单和关联的批或批abc
- 如果QUOTE.QUOTE\u编号与abc
匹配,我将显示父作业及其所有关联的报价单和关联的批次或批次abc
- 如果Quotence.site_文本匹配
,我将显示父作业及其所有关联的报价和关联的批次abc
find
和joins
首先,我这样做:
$options = array(
'conditions' => $conditions,
'order' => array(
'Job.id' => 'DESC',
),
'fields' => $fields
);
$joins = array(
array('table' => 'quotations',
'alias' => 'Quotation',
'type' => 'LEFT',
'conditions' => array(
'Quotation.job_id = Job.id',
)
)
);
$options['joins'] = $joins;
$results = $this->find('all', $options);
因为我的条件主要与Job
和quote
有关,所以我使用这两个模型之间的连接进行搜索,只返回Job.id
之后,我检查是否有符合条件的作业,然后执行另一个查找。这一次,涉及到其他相关模型
if ($results) {
$ids = Hash::extract($results, '{n}.Job.id');
} else {
$ids = array('Job.id' => -1000); // put a fake id
}
$options['conditions'] = array('Job.id' => $ids);
$joins[] = array('table' => 'quotations_in_batches',
'alias' => 'QuotationInBatch',
'type' => 'LEFT',
'conditions' => array(
'Quotation.id = QuotationInBatch.quotation_id',
)
);
$joins[] = array('table' => 'batches',
'alias' => 'Batch',
'type' => 'LEFT',
'conditions' => array(
'Batch.id = QuotationInBatch.batch_id',
)
);
然后使用这些选项执行查找
有比我的更好的方法吗?检查医生:谢谢。我已经更新了我的问题。