
Hoy vamos a ver el uso de la clase PrestashopCollection, ya que os puede ser de utilidad en más de una ocasión, cuando necesitéis, por ejemplo retocar o consultar masivamente registros de una tabla MySQL de Prestashop, pero para ello necesitemos utilizar un método que hemos implementado en el ObjectModel que define los campos de dicha tabla, y que además, no podamos acceder a el sin instanciar el objeto por no ser estática.
Ejemplo de uso de la clase PrestashopCollection
Pongamos por ejemplo, que queremos obtener todos los transportistas(carriers) asignados a cada producto mediante el método de la clase Product getCarriers.Para ello, definiremos la query que obtendrá los registros que se cargarán dentro del array.Veamos el ejemplo:
1 2 3 4 5 6 7 8 9 10 11 | $carriers = array(); //definimos la clse que obtenemos del object model en el constructor $products= new PrestaShopCollection('Product'); //añadimos los parámetros de la condición where $products->where('id_category_default ', '=', '3'); //recorremos el array de Product para obtener los carriers de cada producto foreach ($products as $product) { //guardamos el array de carriers en el array inicializado anteriomente $carriers[$product->id]= $product->getCarriers(); } |
Cómo podréis comprobar en el ejemplo, nos podemos ahorrar varias líneas de código, utilizando esta clase. Una alternativa a esta clase, puede ser el método estático hydrateCollection del objeto ObjectModel, ya que a pesar de tener que utilizar más lineas de código, es bastante más personalizable, ya que podemos montar las queries directamente sobre strings y son necesidad de llamar a métodos de la propia clases para montar nuestra query.De todos modos, sigo recomendando el uso de la clase PrestashopCollection por encima de hydrateCollection si la query que queremos montar para obtener el array de objetos no es excesivamente compleja.
Si utilizáis otros métodos para cargar object models en vuestros desarrollos en Prestashop, no dudéis en dejar en comentario.Espero que os sea de utilidad