Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Como construir consulta siguiendo el estandar de laravel 4 Query Builder

Estas en el tema de Como construir consulta siguiendo el estandar de laravel 4 Query Builder en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos espero me puedan ayudar , como construyo la siguiente consulta el estandar de laravel 4 Query Builder @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original ...
  #1 (permalink)  
Antiguo 14/09/2013, 22:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Como construir consulta siguiendo el estandar de laravel 4 Query Builder

Hola amigos espero me puedan ayudar , como construyo la siguiente consulta el estandar de laravel 4 Query Builder

Código SQL:
Ver original
  1. SELECT a.id,a.nombre,b.nombre,b.apellidos,c.inicio_turno,c.fin_turno
  2. FROM tipos_turnos a INNER JOIN turns c ON a.id = c.tipos_turnos_id
  3. INNER JOIN users b ON b.id = c.users_id AND a.id = 2
  #2 (permalink)  
Antiguo 15/09/2013, 22:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Como construir consulta siguiendo el estandar de laravel 4 Query Builder

amigos ña consulta primero le hice una cambio y quedo asi

Código SQL:
Ver original
  1. SELECT turns.id AS id_turn,turns.inicio_turno,turns.fin_turno,tipos_turnos.id,tipos_turnos.nombre AS turno,users.nombre,users.apellidos
  2. FROM tipos_turnos INNER JOIN turns ON tipos_turnos.id = turns.tipos_turnos_id
  3. INNER JOIN users ON users.id = turns.users_id AND turns.id = 13

y en laravel 4 la realice asi:

Código PHP:
Ver original
  1. $turns = DB::table('tipos_turnos')
  2.         ->join('turns', 'tipos_turnos.id', '=' ,'turns.tipos_turnos_id')
  3.         ->join('users', 'users.id', '=' ,'turns.users_id')
  4.         ->select('turns.id AS id_turn','turns.inicio_turno','turns.fin_turno','tipos_turnos.id','tipos_turnos.nombre AS turno','users.nombre','users.apellidos')
  5.         ->orderBy('tipos_turnos.id','asc')->paginate(50);

si esta mal me corrigen por favor
  #3 (permalink)  
Antiguo 19/09/2013, 13:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Como construir consulta siguiendo el estandar de laravel 4 Query Builder

amigos porque estan complicador crear las consultas en laravel 4

como construyo esta:

Código PHP:
Ver original
  1. SELECT turns.id AS id_turn,users.nombre AS autor,turns.inicio_turno,turns.fin_turno,tipos_turnos.id,tipos_turnos.nombre AS turno,users2.nombre AS aprobo,users.apellidos
  2. FROM tipos_turnos
  3. INNER JOIN turns ON tipos_turnos.id = turns.tipos_turnos_id
  4. LEFT JOIN users ON users.id = turns.users_id
  5. LEFT JOIN users AS users2 ON users2.id=turns.aprobo
  #4 (permalink)  
Antiguo 19/09/2013, 14:31
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 10 meses
Puntos: 27
Respuesta: Como construir consulta siguiendo el estandar de laravel 4 Query Builder

Si usaras modelos de eloquent, podrías hacer algo así (no te va valer copiar y pegar, pero por aquí van los tiros):

Código PHP:
Ver original
  1. class Turno extends Eloquent
  2. {
  3.     function tipo()
  4.     {
  5.         return $this->HasOne('Tipoturno');
  6.     }
  7.  
  8.     function autor()
  9.     {
  10.         return $this->HasOne('Usuario', 'autor_id');
  11.     }
  12.  
  13.     function aprobador()
  14.     {
  15.         return $this->HasOne('Usuario', 'aprobador_id');
  16.     }  
  17. }
  18.  
  19. class Usuario extends Eloquent
  20. {
  21.    
  22. }
  23.  
  24. class Tipoturno extends Eloquent
  25. {
  26.    
  27. }
  28.  
  29. Route::get('listado', function() {
  30.     $turnos = Turno::with('tipo', 'autor', 'aprobador')->get();
  31.  
  32.     foreach ($turnos as $turno) {
  33.         echo $turno->id;
  34.         echo $turno->tipo->nombre;
  35.         echo $turno->autor->email;
  36.         echo $turno->aprobador->apellidos;
  37.     }
  38. });

http://laravel.com/docs/eloquent#relationships
  #5 (permalink)  
Antiguo 19/09/2013, 15:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Como construir consulta siguiendo el estandar de laravel 4 Query Builder

eternoaprendiz gracias por responder voy a usar modelos de eloquent pero me tengo que construir la consulta hasta el momento llevo lo siguiente

$turns = DB::table('tipos_turnos')
->join('turns', 'tipos_turnos.id','=', 'turns.tipos_turnos_id')
->join('users', 'users.id' ,'=' ,'turns.users_id')
->leftjoin('AS users2 ON users2.id','=','turns.aprobo')
->select('turns.aprobo','turns.id AS id_turn','turns.inicio_turno','turns.fin_turno','t ipos_turnos.id','tipos_turnos.nombre AS turno','users.nombre','users.apellidos')
->orderBy('turns.id','asc')->paginate(50);

pero obtengo este error
Cita:
SQLSTATE[42601]: Syntax error: 7 ERROR: error de sintaxis en o cerca de «turns» LINE 1: ...s_id" left join "AS users2 ON users2"."id" on "=" turns.apro... ^ (SQL: select count(*) as aggregate from "tipos_turnos" inner join "turns" on "tipos_turnos"."id" = "turns"."tipos_turnos_id" inner join "users" on "users"."id" = "turns"."users_id" left join "AS users2 ON users2"."id" on "=" turns.aprobo "") (Bindings: array ( ))
  #6 (permalink)  
Antiguo 19/09/2013, 16:28
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 10 meses
Puntos: 27
Respuesta: Como construir consulta siguiendo el estandar de laravel 4 Query Builder

Prueba con:

Código PHP:
Ver original
  1. $results = DB::select("SELECT turns.id AS id_turn,users.nombre AS autor,turns.inicio_turno,turns.fin_turno,tipos_turnos.id,tipos_turnos.nombre AS turno,users2.nombre AS aprobo,users.apellidos
  2. FROM tipos_turnos
  3. INNER JOIN turns ON tipos_turnos.id = turns.tipos_turnos_id
  4. LEFT JOIN users ON users.id = turns.users_id
  5. LEFT JOIN users AS users2 ON users2.id=turns.aprobo");

Y con parámetros:

Código PHP:
Ver original
  1. $results = DB::select('select * from users where id = ?', array(1));

Etiquetas: laravel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.