2017-08-10 48 views
0

我試圖找到使用的代碼下面一行從CallForwardingCondition模型記錄:如何使用cakephp中的findByType從模型中檢索數據?

$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會導致以下查詢?

​​
+0

您使用的是什麼版本的CakePHP? – drmonkeyninja

+0

@drmonkeyninja我正在使用CakePHP v2.10.0-RC1 –

+0

好的,謝謝。我添加了一個適合您的CakePHP版本的答案。 Ajay的答案適用於CakePHP 3.請務必在將來發布問題時提及您使用的版本,因爲它可以幫助人們給出正確的答案。 – drmonkeyninja

回答

0

試試這個:

$result = $this-> CallForwardingCondition ->find('all',['limit'=>10,'conditions'=>['CallForwardingCondition.type Like'=>'%'])->toArray(); 
1

對於CakePHP的2.x的,你需要使用find('all'),並將它傳遞所需的條件和limit: -

$result = $this->CallForwardingCondition->find('all',[ 
    'conditions' => ['CallForwardingCondition.type Like' => '%'], 
    'limit' => 10 
); 

findByType是一種特殊的查找方法那隻會返回匹配type的第一條記錄,作爲find方法的參數傳遞,這就是爲什麼它沒有返回你想。您可以在official docs中閱讀關於findBy魔術功能的更多信息。

0

我不認爲你不能使用findBy有限制。如果你想使用限制,你必須使用findAllBy<fieldName>。即使是findAllBy<fieldName>,也不能使用LIKE

這是CakePHP的

findAllBy<fieldName>(string $value, array $fields, array $order, int $limit, int $page, int $recursive) 

所以,如果你想隱蔽它,你必須執行以下操作方式findAllBy;

$this->CallForwardingCondition->findAllByType('something',['CallForwardingCondition.*'],['CallForwardingCondition.id'=>'desc'],'10'); 

這是012phfrom cakephp doc。

findBy<fieldName>(string $value[, mixed $fields[, mixed $order]]); 

希望對你有幫助。

相關問題