Autor Zpráva
Filip111
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: