2017-09-02 4 views
0

ich in einem Unternehmen definiert haben dieses:CakePHP 3.5 - Entity - Virtual Field nicht zeigt

protected $_virtual = [ 'full_name' ]; 

protected function _getFullName() 
{ 
    return($this->_properties['firstname'] . ' ' . $this->_properties['lastname']); 
}  

Aber das full_name Feld wird durch eine Abfrage (paginator oder finden ('alle')) nicht abgerufen ... wenn die Tabelle als zugeordnete Tabelle bezeichnet wird.

Die Haupttabelle ist GenPersons. In diesem Fall wird das Feld korrekt angezeigt. Aber dann die ich

 $this->paginate = [ 'contain' => ['GenPersons'] ] 

vom AerPilots Controller machen (AerPilots ist ein Modell); und versuchen, das Feld als

 $aerPilot->gen_person->full_name; 

nichts wird angezeigt.

Vergesse ich etwas?

Antwort

0

Ich habe es gefunden. Das Problem lag in der Assoziation an dem Modell. Die GenPersons-Tabelle gehört zum allgemeinen Plugin. Der AerPilots-Tisch gehört zum Aeronautical-Plugin. Wenn ich das Modell für AerPilots gebacken, erzeugt es diesen Code:

$this->belongsTo('GenPersons', [ 
     'foreignKey' => 'gen_person_id', 
     'className' => '**Aeronautical**.GenPersons' 
    ]); 

Und es muss sein:

$this->belongsTo('GenPersons', [ 
     'foreignKey' => 'gen_person_id', 
     'className' => '**General**.GenPersons' 
    ]); 
Verwandte Themen