Jak dostat private ID do entity
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thunderbuff
- Člen | 164
Snažím se o vytvoření modelu po vzoru Entity-Repository-Mapper. Následuji tento návod: https://pla.nette.org/…itory-mapper
Není mi jasná jedna věc. V příkladu je uvedena entita:
<?php
class ShoppingCartItem
{
private $id; // nastavovat v mapperu reflexí, aby "nešlo" změnit
public $name; // jméno položky
public $cost; // kolik stojí
// .. další vlastnosti
public function getId()
{
return $this->id;
}
}
?>
„nastavovat v mapperu reflexí, aby "nešlo“ změnit" – co přesně to znamená, jak v mapperu to ID do entity dostanu?
- Majkl578
- Moderator | 1364
To znamená, že použiješ ReflectionProperty. Na použití je příklad v dokumentaci.
- thunderbuff
- Člen | 164
Díky, vyřešeno:
<?php
$entity = new DiscountCode();
$entity->value = $row->value;
$entity->price = $row->price;
$entity->notes = $row->notes;
$entity->available = $row->available;
$entity->active = $row->active;
$entity->from = $row->from;
$entity->to = $row->to;
$prop = $entity->getReflection()->getProperty('id');
$prop->setAccessible(true);
$prop->setValue($entity, $row->discountcodeid);
?>