Falta a tabela de database no CakePHP, segui as convenções e tentei tudo

O meu aplicativo funciona com outros modelos, mas, por algum motivo, o modelo “Vote” não pode se conectar à tabela db quando tento salvar. Estive por alguns dias e sinto que tentei tudo!

Aqui está meu controlador VoteController.php que chama o modelo (editado para a legibilidade):

autoRender = false; $User = $this->auth(); if ($User) { $track_id = @$this->params['id']; $this->Vote->upvote($track_id, $User['User']['id']); } } } ?> 

aqui está o modelo vote.php:

  array( 'u_id' => $user_id, 't_id' => $id, 'upvote' => 1, 'downvote' => 0 )); $this->save($VoteObject); } } ?> 

E, claro, no meu database, eu tenho uma tabela de “votos” com as colunas id, u_id, t_id, upvote e downvote. Depois que tudo for executado, recebo esse erro:

Tabela de database faltando

Erro: os votos da tabela para o Modelo de Votação não foram encontrados no padrão de fonte de dados.

Eu tentei excluir os arquivos no tmp, bem como renomear tudo, imprimir consultas, etc, e não consigo chegar a lugar nenhum. Qualquer ajuda seria muito apreciada!

tente remover esta linha

 App::uses('AppModel', 'Model'); 

e adicionando isso à class

 var $useTable = 'votes'; 

Parece que está tentando usar o nome correto. para que não seja um problema. Você pode verificar se sua fonte de dados está configurada corretamente.

Tente limpar o diretório tmp / cache. Corrigido para mim.

De acordo com as Convenções do CakePhp, o seu controlador deve ser pluralizado com a palavra Controlador no final, também certifique-se de ter nomeado seu controlador como VotesController.php

  < ?php class VotesController extends AppController { } ?> 

No modelo que você está usando:

  var $name = 'Vote'; 

e você deve usar: var $ name = ‘Votes’; (Plural) e verifique se o nome do seu modelo é Vote.php (Singular).

Também você deveria estar fazendo:

 function upvote($id, $user_id) { $VoteObject = array('Vote' => array( 'u_id' => $user_id, 't_id' => $id, 'upvote' => 1, 'downvote' => 0 )); $this->save($VoteObject); } 

dentro do seu controlador não no modelo.