【发布时间】:2012-01-19 23:56:50
【问题描述】:
在搜索功能中我有这段代码
foreach($words as $word) {
$search = '%'.$word.'%';
$query['conditions'][]['or'] = array(
'ProductComponent.codice LIKE' => $search,
'ProductComponent.nome'.__('_it', true).' LIKE' => $search,
'ComponentType.nome'.__('_it', true).' LIKE' => $search,
'Material.nome'.__('_it', true).' LIKE' => $search,
'Finish.nome'.__('_it', true).' LIKE' => $search,
'ClientCode.client_component_code LIKE' => $search,
);
}
当我执行查询时出现此错误
警告 (512):SQL 错误:1054:未知列 'where 子句'中的'ClientCode.client_component_code' [CORE/cake/libs/model/datasources/dbo_source.php,第 684 行]
这是桌子
CREATE TABLE IF NOT EXISTS `client_codes` (
`id` int(10) NOT NULL auto_increment,
`user_id` int(10) NOT NULL,
`product_component_id` int(10) NOT NULL,
`client_component_code` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=225 ;
这是 ClientCode 模型
<?php
class ClientCode extends AppModel {
var $name = 'ClientCode';
var $belongsTo = array('ProductComponent', 'User');
}
?>
这些是ProductComponent模型的关系
<?php
class ProductComponent extends AppModel {
var $name = 'ProductComponent';
var $belongsTo = array('ComponentType', 'Material', 'Finish','Line');
var $hasMany = array(
'Part',
'RelatedComponent',
'LineRelatedComponent' => array(
'className' => 'RelatedComponent',
'conditions' => array('NOT' => array('LineRelatedComponent.line_id' => NULL)),
),
'GenericRelatedComponent' => array(
'className' => 'RelatedComponent',
'conditions' => array('GenericRelatedComponent.line_id' => NULL),
),
'CustomPriceList',
'PriceList',
'ClientCode'
);
var $hasAndBelongsToMany = array('Upload');
我不明白为什么...请帮忙。谢谢!
【问题讨论】:
-
您的数据库中有
ClientCode.client_component_code列吗? -
只有最后一个条件不行,其他条件都很好
-
是的,Marek 我的数据库中有该列
-
然后清除 /app/tmp(和所有子文件夹)中的缓存并重试,否则,这是您的模型定义/实现的问题
-
发布模型类和数据库表创建 SQL 序列,并将其附加到您的问题,通过它下面的链接
edit
标签: cakephp cakephp-1.3