eloquent-querystring

La ricerca non è ancora disponibile.

Nessun risultato per “”.

↑ ↓ per spostarti · ↵ per aprire Ricerca di Algolia

// avanzate

Cache

Metti in cache i filtri trovati in produzione e scopri quando la cache va rigenerata.

Perché usare la cache

Per trovare i filtri, il package legge gli attributi dei metodi del model ogni volta che lo scope queryString() viene eseguito. Il costo è basso, ma in produzione puoi evitarlo mettendo in cache i filtri di tutti i model:

php artisan querystring:cache

Il comando scrive la mappa dei filtri di ogni model in bootstrap/cache/querystring.php. Per rimuoverla:

php artisan querystring:clear

Il comando optimize di Laravel

La cache fa parte del comando optimize di Laravel, quindi se il tuo deploy lo esegue già non c'è nulla da aggiungere:

php artisan optimize        # esegue anche querystring:cache
php artisan optimize:clear  # esegue anche querystring:clear

Rigenerare la cache

Finché la cache esiste, il package non legge più gli attributi: usa la mappa salvata. Rigenerala ogni volta che aggiungi, rinomini o rimuovi un filtro, o aggiungi il trait a un nuovo model. Altrimenti la modifica non ha effetto.

In sviluppo di solito la cache non serve. Se esegui optimize in locale, ricordati di svuotarla prima di lavorare sui filtri.

Il comando rimuove la cache precedente prima di generare quella nuova. Se la generazione fallisce, per esempio perché un model lancia un'eccezione nel costruttore, non resta nessuna cache e i filtri tornano a essere letti dagli attributi.

Quali model finiscono in cache

Il comando cerca i model nella directory app dell'applicazione. Un model viene incluso quando:

  • estende il Model di Eloquent;
  • usa il trait UseQueryString direttamente nella propria classe.

I model che ereditano il trait da una classe padre o lo ricevono tramite un altro trait non vengono trovati. Usa il trait in ogni model concreto. Un model astratto che usa il trait fa fallire il comando, perché non può essere istanziato.

Per metterlo in cache, il comando crea ogni model con new e chiama il suo metodo getQueryStringObject(), quindi in cache finiscono i filtri dell'oggetto restituito in quel momento.

Per analizzare una directory diversa, passa il suo namespace e il suo percorso come sono dichiarati nella sezione autoload.psr-4 di composer.json:

php artisan querystring:cache --namespace="Domain\\" --path=src/Domain

Ogni esecuzione sostituisce l'intera cache con i model della directory indicata.

Questa pagina ti è stata utile?
Grazie per il feedback!