【发布时间】:2016-11-10 21:48:15
【问题描述】:
我有一个关于 Cakephp 3.3 的问题,我不知道如何通过在 where 子句中使用 contains 来访问链接数据。
这是请求:
$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 'where 子句'中的未知列 'EquipementDest.System.Description'
【问题讨论】:
-
这取决于模型之间的关系。如果所有关系都是 belongsTo 类型,那么您的查询是正确的。但我猜他们是 hasMany 或 belongsToMany。在这种情况下,您必须使用 match() 子句
标签: php cakephp cakephp-3.0