alvaro-prieto
5/11/2017 - 7:45 AM

Relaciones join left right PHP

Relaciones join left right PHP

/*
Un error común que yo he tenido es pensar que si por ejemplo tengo un objeto que
tiene idUsuario, puedo acceder directamanete a los datos del usuario. Esto no es
inmediato del siguiente modo: 
*/

$FichaUsuario = new FichaUsuario();
$FichaUsuario->carga(1);
//ERROR: $FichaUsuario->Usuario->datos->nombre;
$FichaUsuario->Usuario->inyectaSiguiente();
$FichaUsuario->Usuario->datos->nombre; //AHORA SI! ya está cargado

//no puede acceder a los campos de de Usuario porque aunque está definida la relación
//no se ha ejecutado la query, hay que hacer un lista, un inyecta, o algo similar




//Relaciones tipo left y right join

//Por defecto se crea una relación "inner join" entre las clases. 
//Para hacer una relación de otro tipo hay que utilizar la función "relacion".

$Autores=new Autores();
$Autores->Libros->relacion("Capitulos","left");
echo $Autores->Libros->Capitulos->lista(); 
//Relecciona todos los autoers que tengan libros y todos los libros, tengan o no capítulos.

//OTRO EJEMPLO


$PersonalLogros = new PersonalLogros();
/* LEFT JOIN, esto significa:

queremos todos los los logros cruzados con LogrosUsuarios + todos los LEFT (logros) 
que no tengan relacion

O lo que es lo mismo, los COMUNES  +  los EXCLUSIVOS de LEFT


*/

$PersonalLogros->relacion("PersonalLogrosUsuarios","left");
$dump = $PersonalLogros->PersonalLogrosUsuarios->lista('
PersonalLogrosUsuarios.id,
PersonalLogrosUsuarios.fecha,
PersonalLogrosUsuarios.idusuario,
PersonalLogrosUsuarios.idlogro,
PersonalLogros.logro,
PersonalLogros.descripcion,
PersonalLogros.clave,
PersonalLogros.color,
PersonalLogros.icono,
PersonalLogros.oculto,
PersonalLogros.tipo
');