CakePHP: eseguire ricerche sui campi tradotti (Translate Behavior)

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

CakePHP permette di gestire la traduzione dei campi del DB tramite Translate Behavior. Ad esempio se abbiamo un Model chiamato Elements definito nel seguente modo:

class Element extends AppModel {

}

Possiamo impostare che i campi title e description siano trattati come traduzioni:

class Element extends AppModel {
    //inizializzazione Translate behavior per i campi title e description
    var $actsAs = array(
        'Translate'=> array(
            'title', 'description'
        )
    );
}

Per eseguire delle ricerche sui campi tradotti (che vengono salvati in una tabella differente dalla principale del modello) è necessario utilizzare una sintassi particolare per definire i campi, ovvero:  MODEL_I18n__NOME_CAMPO.content (sostituendo le parti in  rosso). Quindi per cercare ad esempio gli elementi con titolo e descrizione vuote:

//ricerca
$elements = $this->Element->find('all',array(
    'conditions' => array(
        'I18n__title.content'=>'',
        'I18n__description.content'=>''
    )
));
debug($elements);

Commenti