1

我有一个新鲜出炉的(带有烘烤控制台)项目,其中有 2 个模型在我调用模型-> 查找函数时表现不同。

用户控制器

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

词控制器

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

查询(调试工具包)

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

在这两种情况下,检查的查询都影响了行,但是如果我调试 paginate() 结果,WordsController 不会返回任何结果,而用户则正确给出。

Word模型没有关系,我尝试将模型名称更改为Term,得到相同的结果。

我还尝试将 CakePHP 核心降级到 2.1.4。没有。

这个问题是否有任何可能的原因?Word 是某种保留关键字吗?如何调试?

4

3 回答 3

5

我想到了。

我在单词表 (UTF8) 中有一些包含特殊字符的文本,例如 àòèéìù。Cake 删除了所有包含这些字符的结果。我尝试用“e”替换“è”,神奇地记录在 Cake 中可用!

希望我 5 小时的头痛能帮助别人!

于 2012-07-09T08:43:58.493 回答
2

正确答案遵循接受。您应该在数据库配置中设置编码: 在我的 conf 中我有:

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

    );

你看到编码键了吗?尝试取消注释或将其设置为正确的编码,瞧!

于 2014-10-30T12:20:16.410 回答
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.
}
于 2015-05-20T09:58:00.563 回答