Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Find 在virtualfield上条件化时,cakephp 2.1找不到()_Find_Cakephp 2.1 - Fatal编程技术网

Find 在virtualfield上条件化时,cakephp 2.1找不到()

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)" ); 我使用这个条件来查看两个字段,一个是常规字

find()中的$condition无法使用virtualfield

我的员工模型上有一个虚拟字段:

        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