我在让 cakephp 正确查询时遇到了一些麻烦。Cake 试图在我的一张桌子上找到一个不存在的列,但我不知道为什么。我有两个表与此有关;投票和帖子。用户可以对帖子进行投票。
这是表格
Table votes
post_id | user_id | vote
table posts
post_id | tite | body | created | modified | user_id | vote_total
当用户对帖子进行投票时,他们的投票将被放置在投票表中,并且 vote_total 会根据他们的投票而增加/减少。
在帖子索引中,用户可以通过这两个链接对帖子进行投票。现在我都发送到同一个函数只是为了让一个工作,然后我会完成另一个
<td><?php echo $this->Html->link('Upvote', array('action' => 'vote', $post['Post']['id']))?>
<?php echo $this->Html->link('Downvote', array('action' => 'Downvote', $post['Post']['id']));?></td>
当我查看显示帖子的 index.ctp 时,出现以下错误
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Post.id' in 'field list'
这是它正在执行的查询
SQL Query: SELECT `Post`.`post_id`, `Post`.`title`, `Post`.`body`, `Post`.`created`, `Post`.`modified`, `Post`.`user_id`, `Post`.`vote_total`, `Post`.`id` FROM `blog`.`posts` AS `Post` WHERE 1 = 1
所以,我的问题是我不知道从哪里查询Post.id。我一直在搜索我的功能和模型,但我无法弄清楚发生了什么。
这是我的帖子控制器的功能
public function vote($id=null){
$this->layout = 'votes_layout';
$this->Post->Votes->recursive = 0;
$this->Post->id = $id;
$user = $this->Auth->User();
$userid = $user['id'];
$conditions = array('votes.id' => $id, 'votes.user_id' => $userid);
$data = $this->Post->Votes->find('all', array('conditions' => $conditions));
if (isset($data) && !empty($data)) {
echo '<p>User have already give a vote!</p>';
} else {
if($this->Post->Votes->validates()){
if ($this->Post->Votes->save($this->request->data)) {
$this->Session->setFlash(__('The vote has been saved'));
$this->redirect(array('action' => 'vote'));
} else {
$this->Session->setFlash(__('The vote could not be saved. Please, try again.'));
}
}
}
}
这是在我的帖子模型中
public $hasMany = array(
'Votes' => array(
'className' => 'Vote',
)
);
所以,我的问题是我在做什么导致蛋糕查询 post.id?它甚至不是我表中的一列,我无法弄清楚查询的来源。
编辑
当我在我的 Posts 模型中删除投票的 hasMany 关系时,查询错误消失了,但是我有以下错误,它引用了表中的每个帖子字段。
Undefined index: id
这不是hasmany关系吗?每个帖子都有很多投票,但每个用户每个帖子只有一票。