2016-07-26 11 views
3

Ich versuche ein IsOnline-Feld für Benutzer hinzufügen, die nicht in der Datenbank vorhanden ist. Gibt es einen Weg, wie isOnline als virtuelles Feld zurückgeben kann? Ich habe dies für den Anwender Einheit versucht, indem:Wie können virtuelle Felder in CakePHP 3 gefunden werden?

protected function _getIsOnline() { 
    return true; 
} 

Aber wenn ich ein $user->find('all', []) das Feld zu tun ist nicht enthalten. Irgendwelche Ideen, wie man das erreicht?

+0

Könnte dies auf ein zwischengespeichertes Modell/Objekt zurückzuführen sein? Hast du versucht, Kuchen Caches zu säubern? – Sevvlor

+0

Was meinst du mit "nicht enthalten"? Wenn Sie beispielsweise zu JSON konvertieren, wird Ihr virtuelles Feld nicht mit einbezogen, es sei denn, Sie haben es auch dem Array $ _virtual in der Entität hinzugefügt. Wenn Sie die Debugausgabe ausgeben, wird sie nicht eingeschlossen, auch wenn sie sich in '$ _virtual' befindet. Aber wenn Sie das Feld selbst ausgeben, sollte es so funktionieren, wie Sie es haben. –

+0

@GregSchmidt Es ist nicht in meinem JSON enthalten. Aber nicht nur, dass es sich nicht um das Objekt handelt, das vom Suchaufruf zurückgegeben wird. Ich habe einen Haltepunkt gesetzt und alle Felder betrachtet, isOnline ist nicht enthalten. – jrquick

Antwort

1

Sie können keine virtuellen Felder innerhalb des Abfrageobjekts verwenden. Nach dem Abrufen der Daten aus der Abfrage müsste eine Filterung stattfinden. Virtuelle Felder sind Lazy Loaded, also existieren sie nicht, bis sie benötigt werden.