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
Réponse acceptée

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
Auteur

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".