模型关联:
- InfoFaturamento属于Contrato
- Contrato有许多ContratoCliente
- ContratoCliente有许多VwCliente
我想获取所有VwClientes
,其中InfoFaturamento
等于参数传递的id。是否可以在不使用联接选项的情况下执行此操作?
这是我试过的代码。它正在返回所有ContratoCliente
:
$test = $this->InfoFaturamento->Contrato->ContratoCliente->find('all', [
'contain' => [
'Contrato' => [
'InfoFaturamento' => [
'conditions' => [
'InfoFaturamento.id' => $idInfoFaturamento
]
]
]
],
]);
debug($test); die();
所有关联都设置在模型中。
我知道我可以使用递归选项来实现这一点,但我不喜欢使用它,因为它返回了很多不必要的数据,而且速度很慢。我也可以使用联接,但使用联接是一种很好的做法吗?
在这样的场景中使用可控制的行为确实很忙,会检索到很多不必要的数据。您可能需要取消绑定和取消设置不需要的。
作为替代方案,我建议您使用联接。它速度更快、更灵活,尤其是在你提到的这种情况下。
你可以参考以下链接:
CakePHP CookBook:关联并加入
CakePHP:连接多个表
希望这能有所帮助。
和平!xD