Hydratace entity s protected/private properties
- kocourPB
- Člen | 47
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 | 208
Nestačilo by označit typ sloupce jako JSON? Pak by měla konverze probíhat automaticky:
- kocourPB
- Člen | 47
Gappa napsal(a):
Nestačilo by označit typ sloupce jako JSON? Pak by měla konverze probíhat automaticky:
Pomohlo :) Diky moc.