我的应用程序可以与其他模型一起使用,但由于某种原因,当我尝试保存时,“投票”模型无法连接到数据库表。我已经在这里待了几天,我觉得我已经尝试了一切!
这是我的控制器VoteController.php,它调用模型(为了便于阅读而编辑):
<?php
class VoteController extends AppController {
var $uses = array('Track', 'Vote');
function upvote() {
$this->autoRender = false;
$User = $this->auth();
if ($User) {
$track_id = @$this->params['id'];
$this->Vote->upvote($track_id, $User['User']['id']);
}
}
}
?>
这是模型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_id,t_id,upvote和downvote。 一切都执行后,我收到此错误:
缺少数据库表
错误:在数据源默认值中找不到模型投票的表投票。
我已经尝试删除tmp中的文件,以及重命名所有内容,打印查询等等,而我似乎无法随时随地获取。任何帮助将不胜感激!
答案 0 :(得分:2)
尝试删除此行
App::uses('AppModel', 'Model');
并将其添加到班级
var $useTable = 'votes';
看起来它正在尝试使用正确的名称。所以这可能不是问题。您能否验证您的数据源是否已正确设置。
答案 1 :(得分:1)
尝试清除tmp / cache目录。 为我固定。
答案 2 :(得分:0)
根据CakePhp约定,你的控制器最后应该用Controller这个词复数,同时确保你的控制器命名为VotesController.php
<?php
class VotesController extends AppController {
}
?>
在您正在使用的模型上:
var $name = 'Vote';
你应该使用:var $ name ='Votes'; (Plural)并确保您的型号名称为Vote.php(Singular)。
应该:
function upvote($id, $user_id) {
$VoteObject = array('Vote' => array(
'u_id' => $user_id,
't_id' => $id,
'upvote' => 1,
'downvote' => 0
));
$this->save($VoteObject);
}
控制器内的不在模型中。