1
我有一個Cakephp 3.3的問題,其中我不知道如何通過使用where子句中的contains來訪問鏈接的數據。Cakephp 3如何在where子句中訪問深度包含關聯?
這裏是請求:
$cables = TableRegistry::get('cable_schedule');
$cablemark = 'test1';
$equipement = 'test2';
$compartment = 'test3';
$system = 'test4';
$query = $cables->find('all')->contain(['CableType', 'Contract', 'EquipementSource' => ['Compartment', 'System'], 'EquipementDest' => ['Compartment', 'System']])
->where(['EquipementSource.Description like' => '%'.$equipement.'%'])
->orWhere(['EquipementDest.Description like' => '%'.$equipement.'%'])
->andWhere(['Cable_Mark like' => '%'.$cablemark.'%'])
->andWhere(['EquipementSource.Compartment.Description like' => '%'.$compartment.'%'])
->orWhere(['EquipementDest.Compartment.Description like' => '%'.$compartment.'%'])
->andWhere(['EquipementSource.System.Description like' => '%'.$system.'%'])
->orWhere(['EquipementDest.System.Description like' => '%'.$system.'%']);
$this->set('cables', $query);
錯誤是:
SQLSTATE [42S22]:未發現柱:1054未知列 'EquipementDest.System.Description' 在 'where子句'
這取決於你有你的模型之間的關係。如果所有關係都是belongsTo類型,那麼你的查詢是正確的。但我想他們是有很多或從屬於許多。在這種情況下,你必須使用matching()子句 – arilia