2012-07-08 39 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. 
}