CakePHP包含:如何设置深层条件?

时间:2016-03-22 16:23:17

标签: php cakephp

模型关联

  • 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();

所有关联都在模型中设置。

我知道我可以使用递归选项来执行此操作,但我不想使用它,因为它返回了大量不必要的数据并且速度很慢。我也可以使用连接,但使用连接是一种很好的做法吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下使用可包容的行为确实非常繁忙,并且会检索大量不必要的数据。您可能必须解除绑定并取消设置不需要的链接。

作为替代方案,我建议你使用连接。它的速度更快,更灵活,特别适用于您所提及的情况。

您可以参考以下链接:

CakePHP CookBook: Associations and joins

CakePHP: Joining multiple tables

希望这有帮助。

和平!的xD