Domanda

Ho una struttura dei dati molto complessa, qualcosa come 10 tabelle senza le tabelle di join.La mia applicazione deve essere in grado di eseguire la ricerca nella maggior parte delle tabelle.

Per fare ciò, devo portare il contenuto dei campi di ricerca in una serie di condizioni.La chiave è il nome del modello, il valore è le condizioni di ricerca, I.e.

$conditions = array(
        'Artist' => array(
                'OR' => array(
                    'Artist.name LIKE' => '%barl%', 
                    'Pseudonym.name LIKE' => '%barl%'
                    )
                ),
        'Content' => array('Content.subject' => 'architecture'),
        'Editor'  => array('Editor.name LIKE' => '%Gal%'),
        etc....
    )
.

Questo array viene passato ai modelli ricercabili e ogni modello prende la condizione che sia rilevante.

$this->find('all', array('conditions' => $conditions['Artist']))
.

Finora così bene, almeno penso.Ora ho iniziato a testare i modelli e mi sono ritrovato a copiare su e oltre lo stesso array nei diversi casi di test del modello, e che mi infastidisce.

C'è un modo per avere questo array accessibile ad ogni prova?Forse l'array non è la soluzione migliore e dovrei fare un modello di ricerca?

Qualche suggerimento?

È stato utile?

Soluzione

Metti l'array come proprietà nell'app_model.php come qualcosa come $ CommonsarchConditions e li accede da dentro i tuoi modelli che dovrebbero ereditare l'AppModel.

A seconda di cosa fai esattamente, se le ricerche differiscono in ogni modello, avrei un test-custodia in ogni test dei modelli.Se non è possibile creare un test separato con un modello di prova che si crea all'interno del test per testare solo le cose di ricerca che vuoi fare.Difficile dire senza saperne di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top