2012-07-08 73 views
1

我有一個新鮮烘焙(與烘烤控制檯)項目在女巫我有2模型行爲不同,當我調用模型 - >找到函數。CakePHP 2.2查找返回空數據,即使查詢匹配結果

UsersController

public function index() { 
    $this->User->recursive = 0; 
    $this->set('users', $this->paginate()); 
} 

WordsController

public function index() { 
    $this->Word->recursive = 0; 
    $this->set('words', $this->paginate()); 
} 

查詢(DebugKit)

SELECT `Word`.`*` FROM `words` AS `Word` WHERE `Word`.`iniziale` = 'A' AND `Word`.`pubblicata` = '1' ORDER BY `Word`.`parola` ASC LIMIT 10 
Affected 10 
Num rows 10 

在這兩種情況下,視察了查詢受影響的行,但WordsController不返回任何結果如果我調試paginate()結果,而用戶正確給出。

單詞模型沒有關係,我嘗試將模型名稱更改爲Term,獲得相同的結果。

我也試着將cakephp核心降級到2.1.4。沒有。

這個問題是否有任何可能的原因? Word是某種保留關鍵字嗎?這怎麼調試?

+0

你說你和「Word」有同樣的問題,對嗎?這將使您的有關單詞「Word」被保護的問題無效......等 – Dave 2012-07-08 15:23:20

+0

將您正在使用的代碼粘貼到視圖中以顯示結果?並粘貼你的調試代碼? – Dave 2012-07-08 15:25:10

+0

鑑於我只有一個調試($字); – mfrascati 2012-07-08 15:40:50

回答

5

我想通了。

我在單詞表(UTF8)中有一些包含特殊字符的文本,比如àòèéìù。 Cake刪除了包含這些字符的所有結果。我嘗試用「e」取代「è」,神奇的是這張唱片在蛋糕中可用!

希望我5個小時的頭痛會幫助別人!

+0

非常感謝你! – dav 2013-08-04 09:40:46

2

接受正確的答案。你應該設定在你的DB配置編碼: 在我的conf我有:

public $default = array(
    'datasource' => 'Database/Mysql', 
       'persistent' => false, 
       'host' => 'localhost', 
       'login' => 'giuseppe', 
       'password' => 'pass', 
       'database' => 'db' 
       'prefix' => '', 
       //'encoding' => 'utf8', 

    ); 

你看到的編碼關鍵?嘗試取消註釋或將其設置爲正確的編碼,瞧!

+1

這解決了我的問題。我也有空白的結果。我已取消註釋並將其設置爲'utf8',現在記錄可見。 – 2015-12-02 14:41:04

0

從上面的問題中留言引用..

檢查模型和AppModel,看看是否有任何一個afterFind()。 afterFind調用必須在最後返回$ results數據集。

function afterFind($results, $primary = false) { 
    //some code here.. 
    return $results; //I had this commented out for some reason 
    //and it generated the same issue. 
}