Cake3 propriétés virtuelles

Par alexyon, il y a 10 ans


Bonsoir à tous,
j'essaie tout simplement de créer une propriété virtuelle en concaténant 2 champs de ma table User (à titre d'exemple).

<?php namespace App\Model\Entity; use Cake\ORM\Entity; use Cake\Auth\DefaultPasswordHasher; class User extends Entity { protected $_accessible = [ 'username' => true, 'email' => true, 'password' => true, ]; protected function _getFullName() { return $this->_properties['username'] . ' ' . $this->_properties['email']; } }

et quand je debug l'entity dans le controller users :

$users = TableRegistry::get('Users'); $user= $users->find()->toArray(); debug($user); die(); /src/Controller/UsersController.php (line 24) [ (int) 0 => object(App\Model\Entity\User) { 'id' => (int) 19, 'username' => 'alexyon', 'email' => 'alexyon@rrrr.fr', '[new]' => false, '[accessible]' => [ 'username' => true, 'email' => true, 'password' => true, ], '[dirty]' => [], '[original]' => [], '[virtual]' => [], '[errors]' => [], '[repository]' => 'Users' },

donc je ne vois nulle part le nouveau champs crée (full_name).
merci.
ps : j'utilise cake 3.09.
j'ai vu sur plusieurs forums que le prb pouvait venir du nommage de l'entite ou de la table, moi j'ai tout crée à partir de composer (cake bake)
http://stackoverflow.com/questions/29275998/cakephp-3-0-virtual-property-missing-on-production-server

2 réponses

PhiSyX, il y a 10 ans

L'important c'est que quand tu fais un $user->full_name (ou $user[0]->full_name dans ton cas) ça fonctionne, non? :o)
Je ne pense pas de toute façon qu'on puisse lister des getters ^^

alexyon, il y a 10 ans

Merci PhiSyX, je pensais qu'il apparaitrait dans l'array '[virtual]' => [], de l'entity, car du coup je ne sais pas à quoi sert cet array
vraiment dommage qu'on ne puisse pas utiliser cette propriété virtuelle dans les find ou pour faire des sommes de colonnes "virtuelles".