tengo este controlador llamado juegos_controller.php:
Código:
Tengo que llamarlo desde otro controlador y lo hago de esta manera:class JuegosController extends AppController { var $name = 'Juegos'; var $helpers = array('Html', 'Form', 'Form'); var $uses = array('Juego','User','Movimiento'); function index() { $this->Juego->recursive = 0; $this->set('juegos', $this->paginate()); } function ajugar($user_id,$juego_id,$numero_nivel) { //Buscamos el Nivel Mayor del Juego en cuestión (juego 1 en este caso) $nivelMayor=$this->Juego->Nivele->nivelMayor($juego_id); //Comparamos el Nivel Mayor con nuestro nivel para determinar cual es mayor if ($numero_nivel > $nivelMayor['Nivele']['Numero_Nivel']) { //Poner el estado del jugador a finalizado (4 es el estado finalizado) if (!$this->User->activar($user_id,4)) return false; } else //si el $nivelMayor es mayor que nuestro nivel actual ($numero_nivel) { //calculamos precio inscripción a este nivel $inscripcion=$this->Juego->precioJuegoNivel($juego_id,$numero_nivel); //Descrementamos el saldo_juego de la tabla USERS: Saldojuego= Saldojuego-incripcion if (!$this->User->decrementarSaldoJuego($user_id,$inscripcion) ) return false; //Hayamos la Id del nivel en el que estamos if (!$nivel_id=$this->Juego->Nivele->nivel_id($juego_id,$numero_nivel)) return false; //Insertamos nuestra partida if (!$id_partida=$this->User->Partida->partidaInsertar($user_id,$nivel_id)) return false; //Incrementamos en uno el valor del campo numero_jugadores de la tabla NIVELES if (!$this->Juego->Nivele->incrementarJugadores($juego_id,$nivel_id)) return false; /*Insertamos una tupla en la tabla de MOVIMIENTOS con los siguientes datos: Concepto=”Inscripcion en juego” & juego_id & “en el nivel” & numero_nivel Importe= incripcion Partida_id=la Partida_id de la tupla anteriormente insertada en la tabla partidas Saldado=true */ $concepto="Inscripción en Juego&". $juego_id."&".$numero_nivel; $nivel_datos=$this->Juego->Nivele->niveleDatos($juego_id,$nivel_id); if (!$this->Movimiento->insertarMoviento($concepto,$nivel_datos['Nivele']['inscripcion'], $id_partida,$saldado=true)) return false; // Buscar en la tabla JUEGOS el juego_id y obtener el valor del campo posiciones $posiciones=$this->Juego->numPosicionesJuego($juego_id); //Si numero_jugadores >posiciones entonces */ if ($nivel_datos['Nivele']['numero_jugadores'] > $posiciones) { /*Buscar en la tabla PARTIDAS, aquella cuya partida_id sea el número más pequeño correspondiente al numero_nivel y al juego_id, siempre y cuando el campo finalizado este a false (ahora el users_id será el correspondiente al de este jugador pues es el promocionado a un nuevo nivel)*/ $partidaPeq=$this->User->Partida->partidaPeqBuscar($juego_id,$numero_nivel,$user_id); //Decrementar en un jugador el campo numero_jugadores en uno de la tabla NIVELES $decrementarJugadores=$this->Juego->Nivele->decrementarJugadores($juego_id,$nivel_id); if (!$decrementarJugadores ) return false; //Poner el campo finalizado=true de la tabla PARTIDAS $finalizado=$this->User->Partida->finalizarPartida($partidaPeq); //Buscamos en la tabla NIVELES, el premio correspondiente al nivel numero_nivel $nivel_datos=$this->Juego->Nivele->niveleDatos($juego_id,$nivel_id); //Incrementamos el saldo_juego= saldo_juego+ premio $incrementaSaldo=$this->User->incrementarSaldoJuego($user_id,$nivel_datos['Nivele']['premio']); if (!$incrementaSaldo) return false; /*Insertamos una tupla en la tabla de MOVIMIENTOS con los siguientes datos: Concepto=”Premio en juego” & juego_id & “en el nivel” & numero_nivel Importe= -premio Partida_id=la Partida_id correspondiente la users_id, en el juego_id en numero_nivel Saldado=true */ $concepto="Premio en juego&". $juego_id."&".$numero_nivel; //$nivel_datos=$this->Juego->Nivele->niveleDatos($juego_id,$nivel_id); if (!$this->Movimiento->insertarMoviento($concepto,$nivel_datos['Nivele']['premio'], $id_partida,$saldado=true)) return false; /*Buscamos en la tabla NIVELES, el aporte_crecimiento que tiene que hacer en el numero_nivel Decrementamos el saldo_juego=saldo_juego- aporte_crecimiento */ $aporteCremimiento=$this->User->decrementarSaldoJuego($user_id,$nivel_datos['Nivele']['aporte_crecimiento']); if (!$aporteCremimiento) return false; /*Insertamos una tupla en la tabla de MOVIMIENTOS con los siguientes datos: Concepto=”Aporte a la lista” & juego_id & “en el nivel” & numero_nivel Importe= aporte_crecimiento Partida_id=la Partida_id correspondiente la users_id, en el juego_id en numero_nivel Saldado=true*/ $concepto="Aporte a la lista&". $juego_id."&".$numero_nivel; if (!$this->Movimiento->insertarMoviento($concepto,$nivel_datos['Nivele']['aporte_crecimiento'], $id_partida,$saldado=true)) return false; /*Calcular rentabilidad (es la suma total del campo rentabilidad para aquellos niveles cuyo Numero_Nivel<=numero_nivel)*/ $rentabilidad=$this->Juego->Nivele->rentabilidadNivel($juego_id,$numero_nivel); //Incrementamos saldo_efectivo=saldo_efectivo+rendimiento $saldoEfectivo=$this->User->IncrementarsaldoEfectivo($user_id,$rentabilidad); /* Insertamos una tupla en la tabla de MOVIMIENTOS con los siguientes datos: Concepto=”Rendimiento en el ” & juego_id & “en el nivel” & numero_nivel Importe - rendimiento Partida_id=la Partida_id correspondiente la users_id, en el juego_id en numero_nivel Saldado=true Ajugar(jugador_id,juego_id,numero_nivel+1 ) */ $concepto="Rendimiento en el Juego&". $juego_id."&".$numero_nivel; //$nivel_datos=$this->Juego->Nivele->niveleDatos($juego_id,$nivel_id); if (!$this->Movimiento->insertarMoviento($concepto,$rentabilidad, $id_partida,$saldado=true)) return false; return true; } } return false; } }
$this->Juego->ajugar($user_id,1,1);
No entiendo el error porque si llamo a este método directamente de este modo
http://localhost/miweb/juegos/ajugar/1/1/1 funciona perfectamente todo el código que lleva dentro dicho método.
El problema es cuando lo llamo desde este otro controlador que me tira este error:
Código:
Haber si a alguien se le ocurre donde puede estar el fallo.Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ajugar' at line 1 [CORE\cake\libs\model\datasources\dbo_source.php, line 525] Code | Context $sql = "ajugar" $error = "1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ajugar' at line 1" $out = null $out = null; if ($error) { trigger_error("<span style = \"color:Red;text-align:left\"><b>SQL Error:</b> {$this->error}</span>", E_USER_WARNING); DboSource::showQuery() - CORE\cake\libs\model\datasources\dbo_source.php, line 525 DboSource::execute() - CORE\cake\libs\model\datasources\dbo_source.php, line 201 DboSource::fetchAll() - CORE\cake\libs\model\datasources\dbo_source.php, line 336 DboSource::query() - CORE\cake\libs\model\datasources\dbo_source.php, line 297 Model::call__() - CORE\cake\libs\model\model.php, line 441 Overloadable::__call() - CORE\cake\libs\overloadable_php5.php, line 52 Juego::ajugar() - [internal], line ?? MovimientosbancariosController::processTransaction() - APP\controllers\movimientosbancarios_controller.php, line 107 Object::dispatchMethod() - CORE\cake\libs\object.php, line 118 Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 227 Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 194 [main] - APP\webroot\index.php, line 88 Query: ajugar bool(false)
Mil gracias de antemano.