Мое приложение работает с другими моделями, но по какой-то причине модель «Голосовать» не может подключиться к таблице db, когда я пытаюсь ее сохранить. Я занимаюсь этим пару дней, и мне кажется, что я все пробовал!
вот мой контроллер 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); } } ?>
И, конечно, в моей базе данных у меня есть таблица «голосов» с идентификаторами столбцов, u_id, t_id, upvote и downvote. После того, как все выполняется, я получаю эту ошибку:
Отсутствует таблица базы данных
Ошибка: Таблица голосов для модели Vote не была найдена в стандарте datasource.
Я попытался удалить файлы в tmp, а также переименовать все, распечатать запросы и т. Д., И я не могу никуда. Любая помощь будет принята с благодарностью!
попробуйте удалить эту строку
App::uses('AppModel', 'Model');
и добавив это в класс
var $useTable = 'votes';
Похоже, он пытается использовать правильное имя. так что это может не быть проблемой. Можете ли вы проверить правильность настройки источника данных.
Попробуйте очистить каталог tmp / cache. Исправлено для меня.
Согласно соглашениям 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); }
внутри вашего контроллера не в модель.