Cita:
Iniciado por GatorV La idea era poder permitir hacer un join (que a veces es muy necesario), y a la vez poder tener tu objeto de forma natural.
Si bien es un cierto hack, es algo necesario cuando necesitas tener tu objeto, por ejemplo supongamos este caso:
Código PHP:
Ver originalclass MyUserTable extends Zend_Row_Table_Abstract
{
protected $_rowClass = 'MyUserRow';
public function getUsersByType(); // Aqui haces un join con otra tabla type
}
class MyUserRow extends Zend_Db_Table_Row_Abstract
{
public function getRegisteredDate(); // Aqui tienes logica para formatear la fecha desde la bdd
}
Si tu haces el select desde el adapter, te va a devolver un array, o un array de objetos (stdClass), y si requieres de tu objeto MyUserRow para realizar cierta lógica permitiendo el join, sin el "hack" no sería posible más que creando manualmente el objeto e inyectando los datos. Es mejor el "hack" y dejar que el FW lo haga por ti.
Repito es algo lo más base a lo que es un ORM que sería lo ideal.
Saludos.
No te discuto que es comodo, por ahi queda mejor que usar el adapter que te lo devuelve como un array, pero si queria que me aclares que era un hack. Inicialmente se penso esto para usar un patron, que despues ellos mismos termianron parcheando o no usandolo de la forma "correcta".
Es una pena, porque a esta altura ZF deberia tener integrado Doctrine como si lo hace SF2.
La queja habitual de sf2 es lo que demoras en configurar un proyecto, pero lo que demoras en configurar te lo ahorras en escribir modulos al pedo, por ejemplo la administracion de usuarios y ACL, ZF deberia poder generarte un admin como lo hace Django sin problemas, un semi framework como django queda mejor parado que ZF solo porque trae este feature, siendo que ZF trae muchos mas componentes para otras cosas.
Tampoco un ORM es ideal para todos los proyectos, deberia ser facilmente cambiable por otro tipo como Mongo u Zend_Db pelao. Pero creo que a esta altura deberiamos tener integracion por default con doctrine, y un mini admin.
Y no estar discutiendo como hacer un join