我有一个新的烘焙(带烘焙控制台)项目,当我调用model-> find函数时,我有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
在这两种情况下,检查的查询都会影响行,但是如果调试paginate()结果,WordsController不会返回任何结果,而用户1会正确地给出。
Word模型没有关系,我试图将模型名称更改为Term,获得相同的结果。
我还尝试将CakePHP核心降级到2.1.4。什么都没有。
这个问题是否有可能的原因? Word是某种保留关键字吗?怎么调试呢?
答案 0 :(得分:5)
我明白了。
我在单词table(UTF8)中有一些包含àòèéìù等特殊字符的文本。 Cake删除了包含这些字符的所有结果。我尝试用“e”替换“è”,并且神奇地记录在Cake中可用!
希望我5个小时的头痛会帮助别人!
答案 1 :(得分:2)
接受正确的答案。您应该在数据库配置中设置编码: 在我的conf中我有:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'giuseppe',
'password' => 'pass',
'database' => 'db'
'prefix' => '',
//'encoding' => 'utf8',
);
您是否看到了编码密钥?尝试取消注释或将其设置为正确的编码,瞧!
答案 2 :(得分: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.
}