Hydratace entity s protected/private properties

kocourPB
Člen | 47
+
0
-

Ahoj,

riesim jednu zahadu s Kdyby\Doctrine.
V databaze v tabulke user mam napr. sltpec groups, kde su data ulozene ako JSON. Pri vyhydratovani tejto entity by som chcel mat vzdy v $user->groups array a nie JSON. Chcel som to riesit pomocou nastavenia tejto property ako protected/private. Priklad:

entita User

/**
 * @property string $groups
 *
 * @ORM\Table(name="user")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class User {

	use \Nette\SmartObject;

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     * @var integer
     */
    public $id;

	/**
     * @ORM\Column(type="string")
     */
    public $password;

    /**
     * @ORM\Column(type="string")
     */
    protected $groups;


    /**
     * @return array
     */
    public function getGroups() {
        return json_decode($this->groups);
    }


    /**
     * @param $groups
     *
     * @return $this
     */
    public function setGroups($groups) {
        $this->groups = json_encode($groups);

        return $this;
    }
}

Problem ale nastava vtedy ked sa snazim vyhydratovat tuto entitu napr. cez:

$user = $this->em->getRepository(\App\Model\Entities\User::class)->find(5889);

echo var_export($user, TRUE);

tak groups su stale ako JSON a nie pole, getter sa teda nezavolal.

Skusal som aj vytvorit konstruktor v entite User a nastavit $groups ako public

public function __construct() {
	$this->groups = $this->getGroups();
}

ale nepomohlo ani to, pretoze konstruktor sa pri vyhydratovani entit nezavola. Mate niekto s tymto skusenost alebo ako to riesite vy? Diky moc za rady.

Editoval kocourPB (25. 7. 2018 15:57)

Gappa
Nette Blogger | 198
+
+1
-

Nestačilo by označit typ sloupce jako JSON? Pak by měla konverze probíhat automaticky:

kocourPB
Člen | 47
+
0
-

Gappa napsal(a):

Nestačilo by označit typ sloupce jako JSON? Pak by měla konverze probíhat automaticky:

Pomohlo :) Diky moc.