2015-10-04 17 views
6

Sto utilizzando un database MySql, quindi ho definito il tipo di colonna Tinyint (1) nello schema db.Ottieni valori booleani come veri o falsi invece 1 o 0

Nel mio ActiveRecord ho impostato il validatore booleano. La logica di salvataggio funziona come previsto.

Quello che volevo ora è che quando chiamo servizio RII di Yii2, restituisco il campo booleano come vero o falso invece 1 o 0, perché sul lato client il framework viene fornito con un confronto rigoroso (===) e 1 non è il lo stesso di vero.

Ovviamente potrei sovrascrivere il valore manualmente prima di inviare il contenuto o sul lato client prima di caricarlo nel modello, ma gradirei una soluzione più pulita.

risposta

1

All'interno afterFind Vorrei modificare i valori da 0 o 1 per vero o falso:

public function afterFind() { 
    $this->booleanField = ($this->booleanField === 1); 
    parent::afterFind(); 
} 
+0

Sì, l'ho già fatto, ma avrei aspettato qualche modo "automatico" di fare questo. Il campo è contrassegnato come booleano nel mio modello, non c'è un modo per consentire a JSON Response Formatter di riconoscerlo da solo? – edrian

+0

Non credo che ci sia un modo per farlo in modo automatico, perché non è qualcosa di necessario per la maggior parte delle situazioni e se è necessario farlo, è possibile aggiungere tale funzionalità su afterFind. – marche

+1

Sì, suppongo che tu abbia ragione .. Ma meno che voglio un modo per estendere il modello o il controller con questo comportamento (forse semplicemente estendendo AfterFind come hai suggerito). Sai come ottenere tutti i campi con il set di validatori "booleani"? – edrian

Problemi correlati