5

Parece que hay algunas maneras diferentes de unir dos tablas usando Zend Framework, pero nunca lo he hecho antes, así que no sé cuál es la mejor manera de hacerlo.¿La mejor manera de hacer una unión interna usando Zend Framework?

Esto es lo que estoy tratando de hacer ...

Tengo 3 tablas en mi base de datos:

users 
    (id , name) 
groups 
    (id , name) 
group_members 
    (id , group_id , user_id) 

Estoy tratando de mirar hacia arriba los grupos a los que pertenece un usuario hacia y mostrar eso al usuario. Esta declaración de SQL básicamente hace el trabajo (aunque puede haber una mejor manera de escribirlo). Solo devuelve las columnas que me interesan, que son la identificación y el título del grupo.

SELECT groups.id, groups.title 
    FROM group_members 
     INNER JOIN groups 
     ON groups.id = group_members.group_id 
    WHERE user_id = $userId 

¿Cómo puedo hacer esto con el Zend Framework?

Respuesta

9

Finalmente descubrí cómo hacerlo. Si tienes una mejor manera, házmelo saber.

$db = Zend_Db_Table::getDefaultAdapter(); //set in my config file 
$select = new Zend_Db_Select($db); 
$select->from('groups', array('id', 'title')) //the array specifies which columns I want returned in my result set 
    ->joinInner(
     'group_members', 
     'groups.id = group_members.group_id', 
     array()) //by specifying an empty array, I am saying that I don't care about the columns from this table 
    ->where('user_id = ?', $userId); 
$resultSet = $db->fetchAll($select); 

Esto devolverá una tabla con solo las columnas id y title. El array() vacío fue la clave para eliminar las columnas que no me importaban. Entonces podría hacer algo con el conjunto de resultados.

foreach ($resultSet as $row) { 
    //do something with $row->id or $row->title 
} 
0

No hay necesidad de usar Ingreso, podemos utilizar Zend_Db_Table lugar por la razón sobre el patrón MVC. Obtuve este formulario de idea here, n.º 10 de Filip. (¿Quizás lo llamen "Table Data Gateway"?)

+1

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – ekad

Cuestiones relacionadas