Passa ai contenuti principali

Sql condizionale in Magento

Per parametrizzare la query o la collection in fase di estrazione dati, ossia aggiungere null - diverso da - >= etc.., è sufficiente utilizzare addFieldToFilter addAttributeToFilter.

Esempio:

$collection= Mage::getModel('mdg_giftregistry/entity')
                ->getCollection()
                ->addFieldToFilter('customer_id', $customer->getId());

In questo caso si richiede di effettuare un filtro con il campo customer_id ugale all'id del customer.

Mage::getModel('mdg_giftregistry/entity')->getCollection() restituisce un oggetto Varien_Data_Collection_DB dove il metodo addFieldToFIlter è così definito:

 /**
     * Add field filter to collection
     *
     * @see self::_getConditionSql for $condition
     *
     * @param   string|array $field
     * @param   null|string|array $condition
     *
     * @return  Mage_Eav_Model_Entity_Collection_Abstract
     */
    public function addFieldToFilter($field, $condition = null)

Il parametro $condition accetta un array con i relativi test da effettuare il campo $field. Le condizioni specificabili sono contenute nel metodo protected function _getConditionSql($fieldName, $condition) e sono:

     * Build SQL statement for condition
     *
     * If $condition integer or string - exact value will be filtered ('eq' condition)
     *
     * If $condition is array - one of the following structures is expected:
     * - array("from" => $fromValue, "to" => $toValue)
     * - array("eq" => $equalValue)
     * - array("neq" => $notEqualValue)
     * - array("like" => $likeValue)
     * - array("in" => array($inValues))
     * - array("nin" => array($notInValues))
     * - array("notnull" => $valueIsNotNull)
     * - array("null" => $valueIsNull)
     * - array("moreq" => $moreOrEqualValue) 
     * - array("gt" => $greaterValue)
     * - array("lt" => $lessValue)
     * - array("gteq" => $greaterOrEqualValue)
     * - array("lteq" => $lessOrEqualValue)
     * - array("finset" => $valueInSet)
     * - array("regexp" => $regularExpression)
     * - array("seq" => $stringValue)
     * - array("sneq" => $stringValue)

Ora vediamo come utilizzare praticamente i filtri:

// Is Equal To (eq)
$collection->addFieldToFIlter('status', array('eq' => 1));

// Is Not Equal To (neq)
$collection->addFieldToFIlter('sku', array('neq' => 'test-product'));

// Greater Than (gt)
$collection->addFieldToFIlter('price', array('gt' => 10.05));
 

// Less Than (lt)
$collection->addFieldToFIlter('price', array('lt' => 15.09));
 

// Greater Than or Equal To (gteq)
$collection->addFieldToFIlter('price', array('gteq' => 2.29));

// Less Than or Equal To (lteq)
$collection->addFieldToFIlter('price', array('lteq' => 5.44));

// Contains (like) - also uses % wildcards
$collection->addFieldToFIlter('sku', array('like' => 'test-product%'));

// Does Not Contain (nlike) - also uses % wildcards
$collection->addFieldToFIlter('sku', array('nlike' => 'test-product%'));

// In Array (in)
$collection->addFieldToFIlter('id', array('in' => array(1,3,12)));

// Not In Array (nin)
$collection->addAttributeToFilter('id', array('nin' => array(1,2,12)));

// Is NULL (null)
$collection->addFieldToFIlter('description', 'null');

// Is Not NULL (notnull)
$collection->addFieldToFIlter('description', 'notnull');

 

***  getSelect() e join() restituiscono un oggetto select, mentre addStoreFilter() e  addIsActiveFilter() restituiscono la collezione.

Post popolari in questo blog

install language on osTicket

this simple guide aims you to install and configure your language on osTicket i written this guide based on forum post http://osticket.com/forum/discussion/76252/installing-language-pack

Vich Uploader: due note per ricordare un apio di aspetti

la documentazione del bundle symfony vich uploader è chiara, anche se non è perfetta
quindi ecco un paio di note per non incappare in errori sciocchi che però fanno perdere tempo.
la configurazione in config.yml contiene le specifiche di come devono essere trattati i files in upload
la configurazione ha un nome e si chiama mapping. nella documentazione del bundle è product_image
nell'entity che conterrà l'immagine è necessario specificare due campi: imageFile e imageName
imageFile contiene il riferimento alla classe symfony File, che è il file effettivo in upload. Il campo è definito come UploadableField e richiede due cose: il nome del mapping, ossia il nostro precedente product_image (!importantissimo) e il nome di una proprieta dove mettere il nome del file
Il form che effettua l'upload del file deve inserire nel builder un campo di tipo vich_file o vich_image e il nome di questo campo deve essere imageFile.
in fase di caricamento il bundle crea in automatico le cartell…

Trasferimento server to server (LINUX) della casella email

Oggi ho scoperto un tool veramente molto utile per il trasferimento server to servevr delle caselle email. Ed è acnhe veloce.
Si chiama imapsync [rif: https://imapsync.lamiral.info/ ]In pratica il tool da linea di comando si connette via imap al server email precedente e trasporta tutto al server di destinazioneLo uso quando faccio migrazioni di vps.Come funziona imapsync per sincronizzare e emailInternet è una risorsa. Da questo blog ho preso tutte le indicazioni https://www.jverdeyen.be/ubuntu/imapsync-on-ubuntu/Uso una distribuzione ubuntu 14.04. Non esiste un pacchetto precompilato da installare. imapsync si basa su perl. Ve lo ricordate? Mica è andato in disuso.Primo: si installano le dipendenze di imapsync per la migrazione mail server to serversudo apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl Secondo: si scarica i…