zend framework - framework - Traducir una consulta para usar Zend_Db_Select
zend framework db limit (2)
Cuando se recupera de su objeto de tabla, la declaración se limitará a esa tabla, creo. Los métodos Zend_Db_Table::select()
devuelven un objeto Zend_Db_Table_Select
que es una subclase de Zend_Db_Select
e impone esta restricción. Pruebe esto en su lugar:
$db = Zend_Db::factory( ...options... );
$select = new Zend_Db_Select($adapter);
$select->from( ''my_table_name'' )->join( ...
Si lo prefiere, lo siguiente debería ser equivalente:
$db = Zend_Db::factory( ...options... );
$db->select()->from( ''my_table_name'' )->join( ...
Tengo problemas para traducir esta consulta y usar Zend_Db_Select
de ZF:
SELECT b.id, b.title, b.description
FROM memberships AS m
JOIN blogs AS b ON b.id = m.blog_id
WHERE m.user_id = ?
ORDER BY m.created
LIMIT 0, 30
(esta consulta funciona y devuelve resultados)
Memberships
es una tabla de enlaces entre blogs
y users
. Es un simple | id | blog_id | user_id |
| id | blog_id | user_id |
asunto.
Esto es lo que tengo hasta ahora:
// $table = Zend_Db_Table instance, $id = a user id
$select = $table->select()
->from(array(''m'' => ''memberships''), array(''b.id'', ''b.title'', ''b.description''))
->join(array(''b'' => ''blogs''), ''b.id = m.blog_id'')
->where(''m.user_id = ?'', (int) $id)
->order(''m.created DESC'')
->limit(0, 30);
Este es el error (extraño (para mí)) que obtengo:
#0: Select query cannot join with another table
Ocurrió en la línea 211 de
D:/.../library/Zend/Db/Table/Select.php
.
Gracias por tu ayuda.
También podría seguir utilizando el objeto tradicional $ model-> select () agregando setIntegrityCheck (false), de esa manera.
$select = $table->select()
->setIntegrityCheck(false)
->from(array(''m'' => ''memberships''), array(''b.id'', ''b.title'', ''b.description''))
->join(array(''b'' => ''blogs''), ''b.id = m.blog_id'')
->where(''m.user_id = ?'', (int) $id)
->order(''m.created DESC'')
->limit(0, 30);
Esto desactiva el cheque que arroja la excepción:
#0: Select query cannot join with another table