Find 在virtualfield上条件化时,cakephp 2.1找不到()
find()中的$condition无法使用virtualfield 我的员工模型上有一个虚拟字段:Find 在virtualfield上条件化时,cakephp 2.1找不到(),find,cakephp-2.1,Find,Cakephp 2.1,find()中的$condition无法使用virtualfield 我的员工模型上有一个虚拟字段: var $virtualFields = array( 'AgentFullName' => "CONCAT(Employee.id, ' ', Employee.emp_ape_pat, ' ', Employee.emp_ape_mat, ' ', Employee.name)" ); 我使用这个条件来查看两个字段,一个是常规字
var $virtualFields = array(
'AgentFullName' => "CONCAT(Employee.id, ' ', Employee.emp_ape_pat, ' ', Employee.emp_ape_mat, ' ', Employee.name)"
);
我使用这个条件来查看两个字段,一个是常规字段,一个是虚拟字段(
在虚拟字段中查找有效文本时,My find不返回任何记录:
$theid = $this->Horario->Employee->find('first', array(
'fields' => array('Employee.emp_appserial', 'Employee.AgentFullName'),
'conditions' => $idconditions,
));
但是,sql_转储似乎是正确的:
当find()查找id号时:
SELECT `Employee`.`emp_appserial`, (CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) AS `Employee__AgentFullName` FROM `devopm0_5`.`employees` AS `Employee` WHERE ((`Employee`.`id` LIKE 1005) OR ((CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) LIKE '1005')) LIMIT 1
以及使用姓氏的find()(不返回任何记录)
我想知道为什么virtualfield不能被搜索
你能帮忙吗
非常感谢!您不能将VirtualFields用作SQL条件。 执行查找后,虚拟字段将添加到结果中,这就是为什么不能对其设置条件。 : 这些字段无法保存,但将被视为读取操作的其他模型字段。它们将与其他模型字段一起在模型键下编制索引
非常感谢Borislav;修改了我的条件以使用常规字段而不是虚拟字段。
SELECT `Employee`.`emp_appserial`, (CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) AS `Employee__AgentFullName` FROM `devopm0_5`.`employees` AS `Employee` WHERE ((`Employee`.`id` LIKE 1005) OR ((CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) LIKE '1005')) LIMIT 1
SELECT `Employee`.`emp_appserial`, (CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) AS `Employee__AgentFullName` FROM `devopm0_5`.`employees` AS `Employee` WHERE ((`Employee`.`id` LIKE 'SMITH') OR ((CONCAT(`Employee`.`id`, ' ', `Employee`.`emp_ape_pat`, ' ', `Employee`.`emp_ape_mat`, ' ', `Employee`.`name`)) LIKE 'SMITH')) LIMIT 1