我在使用Cakephp 3.3时遇到了一个问题,我不知道如何在where子句中使用contain来访问链接数据。
请求如下:
$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);
错误为:
状态[42S22]:未找到列:1054“where子句”中的未知列“设备目标系统说明”
1条答案
按热度按时间jvlzgdj91#
您需要使用
matching()
方法(请参阅CakePHP手册)。例如,如果您有数据表出版项,而且它有许多标记,您可以筛选结果如下: