2016-11-10 70 views
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子句'

+0

這取決於你有你的模型之間的關係。如果所有關係都是belongsTo類型,那麼你的查詢是正確的。但我想他們是有很多或從屬於許多。在這種情況下,你必須使用matching()子句 – arilia

回答

相關問題