Filtri in AND logico tra loro
Nelle Guide precedenti abbiamo visto come selezionare le Entità da elencare in una Vista con i Filtri della sezione Criteri del filtro. Ad esempio, abbiamo visto che nella Vista "Tuoi Attrezzi" della app "Vicinato" sono necessari i seguenti Filtri:
| elenca Attrezzi | aggiungi Contenuto - Tipo di contenuto e seleziona "Attrezzo" |
| elenca Attrezzi prestabili | aggiungi Contenuto - Stato (field_stato_attrezzo) - Appare in: attrezzo. |
| elenca Attrezzi di proprietà dell'Utente corrente | aggiungi Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
I Filtri elencati nella sezione Criteri del filtro sono considerati in AND logico tra loro: una Entità è mostrata solo se soddisfa tutti i Filtri. Quindi i Filtri sopra elencati corrispondo a questa logica:
(Tipo di contenuto=Attrezzo) AND (Stato dell'Attrezzo=Prestabile) AND (Utente corrente = Proprietario dell'Attrezzo)
APPROFONDIMENTO: Dati due Filtri A e B, la loro combinazione A AND B è soddisfatta solo se entrambi sono soddisfatti. Quindi:
|
Filtri in OR logico tra loro
Nella costruzione di alcune Viste potremmo invece la necessità di mostrare Entità che soddisfano un Filtro oppure un altro Filtro. Ad esempio, nella app "Vicinato" ci potrebbe servire una Vista che mostri l'elenco delle Richieste all'Utente che chiede l'Attrezzo (Utente Richiedente) e all'Utente che presta l'Attrezzo (Utente Proprietario) ma a nessun altro Utente. Se in questa Vista aggiungiamo alla sezione Criteri del filtro un Filtro che impone che l'Utente corrente è il Richiedente e un Filtro che impone che l'Utente corrente è il Proprietario, non vedremo nessuna Richiesta, perché Richiedente e Proprietario non sono mai lo stesso Utente e quindi per nessun Utente saranno contemporaneamente soddisfatti i due Filtri.
In un caso come questo, avremmo invece bisogno che i due Filtri siano in OR logico tra loro: una Entità è mostrata se soddisfa almeno uno dei Filtri, cioè:
(Utente corrente=Richiedente) OR (Utente corrente=Proprietario)
APPROFONDIMENTO: Dati due Filtri A e B, la loro combinazione A OR B è soddisfatta se almeno uno è soddisfatto. Quindi:
|
Come comporre nella Vista i Filtri in AND / OR logico tra loro
Le Viste supportano sia Filtri in AND logico tra loro (è il default) sia in OR logico tra loro, sia in combinazione più complesse. Torniamo all'esempio di cui sopra, cioè una Vista che elenchi le Richieste al Richiedente e al Proprietario ma non agli altri Utenti. Per ottenere questo effetto occorre combinare i Filtri in questo modo:
(Tipo di contenuto=Richiesta) AND ((Utente corrente = Richiedente) OR (Utente corrente = Proprietario))
Infatti la combinazione ((Utente corrente = Richiedente) OR (Utente corrente = Proprietario)) è soddisfatta se l'Utente corrente è il Richiedente oppure è il Proprietario, ma non è soddisfatta se l'Utente corrente non è né Richiedente né Proprietario. Vediamo come descrivere questo caso (il passaggio specifico è quello in grassetto):
| mostra solo Richieste | nella sezione Criteri del filtro aggiungi il Filtro Contenuto - Tipo di contenuto e seleziona "Richiesta" |
| identifica il Richiedente tramite la relazione (Richiesta → Autore) e il Proprietario tramite la catena di relazioni (Richiesta → Attrezzo) e (Attrezzo → Autore) | nella sezione Relazioni:
|
| mostra le Richieste che hanno come Richiedente l'Utente corrente | Nella sezione Criteri del filtro aggiungi Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Richiedente", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
| mostra le Richieste che hanno come Proprietario l'Utente corrente | Nella sezione Criteri del filtro aggiungi Utente - Corrente - Filtra la vista con l'utente attualmente autenticato, come Relazione seleziona "Proprietario", come operatore seleziona è uguale a e come è l'utente autenticato seleziona si |
| metti i Filtri sull'Utente corrente in OR logico tra loro e in AND logico con gli altri Filtri | Nella sezione Criteri del filtro clicca And/or Arrange Clicca Crea un nuovo gruppo di filtri Per il nuovo gruppo di filtri seleziona come operatore O (=OR) Trascina i due Filtri nel nuovo gruppo Clicca Applica. Controlla che i due Filtri siano raggruppati a parte, in OR tra loro ed in AND con gli altri Filtri:
|




