Отсутствие таблицы базы данных в CakePHP, я следил за соглашениями и пробовал все

Мое приложение работает с другими моделями, но по какой-то причине модель «Голосовать» не может подключиться к таблице 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); } 

внутри вашего контроллера не в модель.