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
');