Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/01/2010, 06:56
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Cake Php error SQL query

Hola gente , sigo batallando con Cake Php y la verdad que me gusta mucho este FW. Me ha surgido un problemilla que por mucho que googleo no consigo resolver:

tengo este controlador llamado juegos_controller.php:


Código:
	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;
	}

}
Tengo que llamarlo desde otro controlador y lo hago de esta manera:
$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:
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)
Haber si a alguien se le ocurre donde puede estar el fallo.
Mil gracias de antemano.
__________________
Videotutoriales de Drupal