CakePHP查找函数存在问题-行为不符合要求-返回重复项
首先,感谢您的关注。我正在学习CakePHP,并在学习的过程中设置应用程序。我遇到了一个我似乎不知道如何解决的问题 我有一个具有以下功能的物品控制器:CakePHP查找函数存在问题-行为不符合要求-返回重复项,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,首先,感谢您的关注。我正在学习CakePHP,并在学习的过程中设置应用程序。我遇到了一个我似乎不知道如何解决的问题 我有一个具有以下功能的物品控制器: function getRelated(){ $relatedarticles = $this->Article->find( 'all', array( 'fields'
function getRelated(){
$relatedarticles = $this->Article->find(
'all',
array(
'fields' => array(
'Article.title'
),
'limit' => 4,
'order' => 'Article.id ASC',
'recursive' => 1,
'conditions' => array(
'Article.category_id =' => '1'
)
)
);
if (!empty($this->params['requested'])) {
return $relatedarticles;
} else {
$this->set(compact('relatedarticles'));
}
}
我还使用以下代码设置了一个元素,我可以在整个应用程序中使用该元素:
<div id="articles_view_related">
Related News
<?php
$relatedarticles = $this->requestAction('/articles/getRelated');
//debug($relatedarticles);
?>
<ul>
<?php
foreach($relatedarticles as $relatedarticle){
?>
<li>
<?php
echo $relatedarticle['Article']['title'];
?>
</li>
<?php
}
?>
</ul>
</div>
问题是我试图理解的一种不好的关系: 我在articles.php模型文件中有以下关系:
var $belongsTo = array(
'Category' => array(
'className' => 'Category',
'foreignKey' => 'category_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
我删除了用户关系,现在它可以很好地解决这个问题,但是在需要用户关系的地方会出现问题。。有人知道为什么吗
[已解决]-请参阅下面的评论…生成的SQL查询是什么样子的,如果直接在数据库上运行,会产生什么结果?发布SQL输出将有助于其他人调试您的问题。此外,您正在以字符串而不是整数的形式传递category_id。删除引号。我已经用CakePHP调试输出更新了代码。。。我将尝试直接查询sql并发回。谢谢你,如果你找到了一个解决方案,请把它作为答案发布并接受它,这样对其他人会有帮助。可能是反向关系是hasOne关系,但数据库保存了重复的关系。你能发布你的用户、类别和文章模型吗?我会稍后再发布。我肯定需要用户关系,因为任何其他需要它的东西都不会工作。评论只是一个临时的东西,但不是一个解决方案……我通过phpmyadmin检查了数据库,它没有任何问题。如果我的文章模型类中的$belongsTo引用了“User”,则find'all'只返回重复项。我仍然需要这方面的帮助,因为我需要我与“用户”的关系。。。谢谢,我的数据库设置不正确。在我的用户表中,ID设置为Varchar36,当我将其更改为Int-AutoIncrement时,一切都开始正常运行……我不知道ID是如何更改为varchar的。
var $belongsTo = array(
'Category' => array(
'className' => 'Category',
'foreignKey' => 'category_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);