Pregunta

Estoy tratando de usar un objeto de selección para filtrar los resultados de un conjunto de filas de muchos a muchos. Esta llamada funciona muy bien:

$articles = $this->model->findArticlesViaArticlesUsers();

Sin embargo, esto no:

$articles = new Default_Model_Articles();
$articleSelect = $articles->select();
$articleSelect->where("status = 'published'")
              ->order("date_published DESC")
              ->limit(1);

$articles = $this->model->findArticlesViaArticlesUsers($articleSelect);

Eso arroja el siguiente error:

  

excepción 'Zend_Db_Select_Exception'   con mensaje 'No puede definir un   nombre de correlación 'i' más de una vez '

No puedo descubrir cómo obtener con éxito " artículos que tengan el estado de 'publicado' " usando la relación mágica de muchos a muchos (ni findManyToManyRowset ). Estoy al final de mi cuerda y estoy pensando en solo escribir el sql manualmente. ¿Alguna idea?

¿Fue útil?

Solución

Al definir la declaración de selección, debe usar el mismo objeto al que llama findManyToManyRowset (o la función mágica que use).

Ej:

$articles = new Default_Model_Articles();
$user = $articles->find($userId)->current();
$select = $user->select();
$select->where('status = ?', 'published');
$articles = $user->findArticlesViaArticlesUsers($select);

Observe la declaración de selección y findArticlesViaArticlesUsers están extendiendo $ user. Esa es la clave.

Otros consejos

Creo que has entendido mal cómo funcionan las relaciones.

Consulte esta página de manual : debe llamar al método magic, findArticlesViaArticlesUsers, en un objeto Row. En este caso, creo que quieres encontrar un usuario y luego llamar a findArticles ... al respecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top