Omezení rozhraní entity – problém s asociovaným stavem
- Roman Halaxa
- Člen | 60
Zdravím,
Mám malý problém. Refaktoruji model a chtěl jsem omezit rozhraní entity jako je popsáno zde
/**
* @Entity
*/
class Article {
const STATUS_DRAFT = 1;
const STATUS_PUBLISHED = 2;
/** @Column(type="integer") */
private $status;
/** @Column(type="date") */
private $publishDate;
/** @Column(type="integer") */
private $viewCount;
// další properties
public function __construct() {
$this->status = static::STATUS_DRAFT;
$this->viewCount = 0;
}
public function setPublished(DateTime $date) {
$this->status = static::STATUS_PUBLISHED;
$this->publishDate = $date;
}
// další gettery a settery (settery by měly obsahovat validaci vstupů)
}
Funkce publish krásně nastaví vše aby byli data konzistentní. Mám podobnou entitu, ale můj problém je, že stav mám v asociované tabulce, a tudíž mi nestačí říct stav = 1,2… ale musel bych stav podle id najít a ten pak nastavit. Mít však entity manager v entitě je prý nevhodné a jiné řešení mě nenapadá. Jde nějak nastavit asociované entity přímo v entitě nějakým jiným způsobem ?
Předem děkuji za odpověď :)
EDIT: momentálně mám pomyslné publish napsané jako servisní třídu, ale chtěl jsem to mít takhle v entitě, protože mi to příjde mnohem elegantnější.
Editoval Roman Halaxa (8. 1. 2019 11:55)