query jfactory delete complemento mysql joomla joomla2.5 joomla3.0 joomla3.1

mysql - jfactory - Base de datos de Joomla-¿Cómo usar LIMIT en getQuery?



jfactory joomla (4)

Más viejo que Joomla 3.0

$db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select(''*'') ->from($db->nameQuote(''#__table_name'')) ->order($db->nameQuote(''id'').'' desc''); $db->setQuery($query,0,1); $rows = $db->loadObjectList();

$db->setQuery función toma 3 parámetros. El primero es la consulta, luego el inicio, luego el límite. Podemos limitar los registros como se muestra arriba.

Más nuevo que Joomla 3.0

setLimit(integer $limit, integer $offset)

Si quieres solo una fila

$query->setLimit(1);

Lee mas

Quiero construir la siguiente consulta utilizando la clase de base de datos joomla incorporada.

SELECT * FROM table_name ORDER BY id DESC LIMIT 1

Esta es la consulta que he construido hasta ahora.

$db =& JFactory::getDBO(); $query = $db->getQuery(true); $query->select($db->nameQuote(''*'')); $query->from($db->nameQuote(TABLE_PREFIX.''table_name'')); $db->setQuery($query); $rows = $db->loadObjectList();

No sé cómo agregar el límite (LÍMITE 1) a la consulta. ¿Alguien por favor me puede decir cómo hacerlo? Gracias


A partir del 08 / Sept / 14 Las soluciones de @Dasun o @escopecz no están funcionando para mí en J3.x

Pero este viejo truco me funciona, lo cual es bueno.

$query->order($db->qn(''id'') . '' DESC LIMIT 25'');

Y sobre su requisito específico de querer obtener solo 1 fila puede usar:

$rows = $db->loadObject();



SetLimit no funciona para mí en Joomla 3.4.x, así que intente:

Dentro del modelo:

protected function getListQuery() { // Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); // Select some fields $query->select(''*''); $query->from(''#__your_table''); $this->setState(''list.limit'', 0); // 0 = unlimited return $query; }

Respuesta de Davids: https://joomla.stackexchange.com/questions/4249/model-getlistquery-fetch-all-rows-with-using-jpagination

Ejecute eso antes de que el modelo llame a getItems y cargará todos los elementos por usted.

Algunas advertencias con esto.

También puede hacer esto fuera del modelo, por lo que si, por ejemplo, estaba en su vista. Podrías hacer lo siguiente:

$ model = $ this-> getModel (); $ model-> setState (''list.limit'', 0);

A veces, puede hacer esto demasiado pronto, antes de que se haya completado el estado del modelo, lo que hará que el modelo se reconstruya desde el estado del usuario después de haber establecido el límite, básicamente anulando el límite.

Para solucionar esto, puede forzar al modelo a rellenar su estado primero:

$ model = $ this-> getModel (); $ model-> getState (); $ model-> setState (''list.limit'', 0); El método populateState real está protegido, por lo que fuera del modelo no puede llamarlo directamente, pero cualquier llamada a getState se asegurará de que se llame populateState antes de devolver la configuración actual en el estado.