1

我正在使用 cakePHP 版本 2.3.7,并希望找到所有属性以 2 个第一个字符开头的引用,例如 AB。但是,findAllBy 函数只有在我输入完整的参考号时才起作用,它似乎不只接受前 2 个字符来查找所有字符。

难道我做错了什么?Cookbook 说: findAllBy(string $value, array $fields, array $order, int $limit, int $page, int $recursive) 作为 find[All]

我的搜索表格

<?php echo $this->Form->create('Property',array('action'=>'mysearch'));?>
<?php echo $this->Form->input('ref', array('label' => 'Reference:')); ?>
<?php echo $this->Form->end('Search'); ?>

控制器中的搜索功能。

    public function mysearch() {
            $ref = $this->data['Property']['ref'];
            $this->Property->recursive = 0;
    $propData = ($this->Property->findAllByRef($ref));
            $this->set('property', $propData);
            debug ($propData);
}

我知道如果我输入正确的参考号它会起作用,但我想 findAllByRef 仅以前 2 个或更多字符开头,就像一种 AB* 过滤器。

非常感谢任何帮助。

4

1 回答 1

1

findAllBy 是一个别名

想查找所有具有以前 2 个字符开头的 ref 的属性

魔术查找功能findAllByXXX只是以下的别名:

find('all', array('conditions' => array('xxx' => 'param'));

因此,它不适合目标,并且行为与观察完全匹配(仅在通过完整参考时才有效)。

使用正确的功能

问题中描述的是一个简单的类似查询:

$propData = $this->Property->find('all', array(
    'conditions' => array(
        'ref LIKE' => $ref . '%'
    )
));
于 2013-07-27T14:55:00.570 回答