CakePHP中缺少数据库表,I';我遵守惯例,什么都试过了
我的应用程序可以与其他模型一起使用,但由于某些原因,当我尝试保存到db表时,“投票”模型无法连接到db表。我已经做了几天了,我觉得我什么都试过了 下面是我的控制器VoteController.php,它调用模型(为了可读性而向下编辑):CakePHP中缺少数据库表,I';我遵守惯例,什么都试过了,php,database,cakephp,model,Php,Database,Cakephp,Model,我的应用程序可以与其他模型一起使用,但由于某些原因,当我尝试保存到db表时,“投票”模型无法连接到db表。我已经做了几天了,我觉得我什么都试过了 下面是我的控制器VoteController.php,它调用模型(为了可读性而向下编辑): 下面是model vote.php: <?php App::uses('AppModel', 'Model'); class Vote extends AppModel { var $name = 'Vote'; functio
下面是model vote.php:
<?php
App::uses('AppModel', 'Model');
class Vote extends AppModel {
var $name = 'Vote';
function upvote($id, $user_id) {
$VoteObject = array('Vote' => array(
'u_id' => $user_id,
't_id' => $id,
'upvote' => 1,
'downvote' => 0
));
$this->save($VoteObject);
}
}
?>
当然,在我的数据库中,我有一个表“投票”,其中包含id、u\u id、t\u id、upvote和downvote列。
在执行所有操作后,我得到以下错误:
缺少数据库表
错误:在数据源默认值中找不到模型投票的表投票
我尝试过删除tmp中的文件,以及重命名所有内容、打印查询等,但似乎什么都做不到。任何帮助都将不胜感激 尝试删除此行
App::uses('AppModel', 'Model');
并将其添加到类中
var $useTable = 'votes';
看起来它试图使用正确的名称。所以这可能不是问题。您能否验证数据源的设置是否正确 根据CakePhp惯例,您的控制器最后应该与controller一词复数,还要确保将控制器命名为VotesController.php
<?php
class VotesController extends AppController {
}
?>
您应该使用:var$name='投票';(复数)并确保您的模型名为Vote.php(单数)
此外,您应该执行以下操作:
function upvote($id, $user_id) {
$VoteObject = array('Vote' => array(
'u_id' => $user_id,
't_id' => $id,
'upvote' => 1,
'downvote' => 0
));
$this->save($VoteObject);
}
在控制器内部,不要进入模型。尝试清除tmp/cache目录。
对我来说已修复。数据源设置正确,因为其他模型与数据库一起工作。我试着这么做,但同样的事情发生了:\n仔细检查您是否已删除
APP/tmp
中的所有缓存文件;并再次检查您的投票
表是否与数据库中的$default
中提到的数据库在同一个数据库中。php
被否决,因为a)模型名称是单数的,b)在模型中具有向上投票功能是可以的。是的,您完全正确。根据cakephp惯例,当我键入vots.php时是我的错误,模型应该是单数形式。至于第二点,如果你读了我的答案,我说应该在控制器中完成,但是谢谢你的输入。我会编辑这篇文章。
var $name = 'Vote';
function upvote($id, $user_id) {
$VoteObject = array('Vote' => array(
'u_id' => $user_id,
't_id' => $id,
'upvote' => 1,
'downvote' => 0
));
$this->save($VoteObject);
}