我正在尝试使用以下代码行从 CallForwardingCondition 模型中查找记录:
$this->loadModel('CallForwardingCondition');
$this->set('callForwardingCondition', $this->CallForwardingCondition->findByType('list'));
在SQL转储中,在重新加载页面后完成查询:
SELECT `CallForwardingCondition`.`type`, `CallForwardingCondition`.`description` FROM `vpbx`.`call_forwarding_condition` AS `CallForwardingCondition` WHERE `CallForwardingCondition`.`type` = 'list' LIMIT 1
如何将Cakephp指向findByType,这将导致后续查询?
SELECT `CallForwardingCondition`.`type`, `CallForwardingCondition`.`description` FROM `vpbx`.`call_forwarding_condition` AS `CallForwardingCondition` WHERE `CallForwardingCondition`.`type` LIKE '%' LIMIT 10
答案 0 :(得分:1)
对于CakePHP 2.x,您需要使用find('all')
并将其传递给所需的条件limit
: -
$result = $this->CallForwardingCondition->find('all',[
'conditions' => ['CallForwardingCondition.type Like' => '%'],
'limit' => 10
);
findByType
是一种特殊的搜索方法,它只会返回与作为查找方法参数传递的type
匹配的第一条记录,这就是为什么它不会返回您想要的内容。您可以在official docs中了解有关findBy
魔术功能的更多信息。
答案 1 :(得分:0)
试试这个:
$result = $this-> CallForwardingCondition ->find('all',['limit'=>10,'conditions'=>['CallForwardingCondition.type Like'=>'%'])->toArray();
答案 2 :(得分:0)
我认为您无法使用findBy
限制。如果要使用限制,则必须使用findAllBy<fieldName>
。即使findAllBy<fieldName>
,您也无法使用LIKE
。
这是来自cakephp的findAllBy
findAllBy<fieldName>(string $value, array $fields, array $order, int $limit, int $page, int $recursive)
因此,如果你想要隐瞒它,你必须采取以下方式;
$this->CallForwardingCondition->findAllByType('something',['CallForwardingCondition.*'],['CallForwardingCondition.id'=>'desc'],'10');
这是来自cakephp doc的findBy。
findBy<fieldName>(string $value[, mixed $fields[, mixed $order]]);
希望对你有所帮助。