Autor | Zpráva | ||
---|---|---|---|
Filip111 Profil |
#1 · Zasláno: 14. 8. 2012, 15:39:59 · Upravil/a: Moderátor (editace znemožněna) 16. 8. 2012, 10:48:51
Ahoj, po nějaké době jsem se zase začal snažit o zprovoznění Doctrine2 a opět jsem se zasekl na asociacích.
Mám dvě entity Content a ContentText. Content je hlavička záznamu(článku), ContentText jsou jeho jazykové verze a snažím se je spolu provázat tak, abych se z entity Content dostal na texty článku. Pořád mi to ale hlásí nějaké chyby, takže bych byl rád kdyby se na to někdo zběhlí podíval a řekl zda uvažuji správně, případně co je špatně. Příklad DB struktury (zjednodušeno): CREATE TABLE `content` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `date_created` datetime DEFAULT NULL, `status` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ); CREATE TABLE `content_text` ( `id` int(10) unsigned NOT NULL, `lang` char(2) NOT NULL, `title` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`,`lang`) ); Pro názornost jsem vyházel settery a gettery, není v nich nic zajímavého. Entita Content: namespace Model; use Doctrine\Common\Collections\ArrayCollection; /** * @Entity * @Table(name="content") */ class Content { /** * @Id * @Column(type="integer") * @GeneratedValue */ private $id; /** * @Column(name="date_created", type="date") */ private $dateCreated; /** * @Column(type="boolean") */ private $status; /** * @OneToMany(targetEntity="ContentText", mappedBy="id") */ // TADY SI NEJSEM JIST HODNOTOU V mappedBy private $texts; public function __construct() { $this->texts = new ArrayCollection(); } } Entita ContentText: namespace Model; use Doctrine\Common\Collections\ArrayCollection; /** * @Entity * @Table(name="content_text") */ class ContentText { /** * @Id * @Column(type="integer") */ private $id; /** * @Column(type="string") */ private $lang; /** * @Column(type="string") */ private $title; Celé to končí chybou undefined index: id což je právě to id uvedené v definici asociace: @OneToMany(targetEntity="ContentText", mappedBy="id") Zkoušel jsem i obousměrné asociace, ale to jsem pak vše smazal. Pokud by se to podařilo zprovoznit byl bych opravdu rád. Díky za každou radu. |
||
Časová prodleva: 12 let
|
0