Probleme mit 1:n Relation in doctrine

NetBull

Erfahrenes Mitglied
Hi,

ich arbeite mich nun tiefer in Doctrine ein und bekomme eine Relation zweier Entitäten nicht hin.

Eine Entity Collection soll n Entitäten vom Typ Item beinhalten.

Die Collection....
PHP:
namespace test\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* User
* @package Application\Entity
*
* @ORM\Entity
* @ORM\Table(name="collections")
*/
class Collection
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\Column(name="id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="integer")
     */
    protected $name;

}

Das Item...
PHP:
namespace test\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* User
* @package test\Entity
*
* @ORM\Entity
* @ORM\Table(name="items")
*/
class Item
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\Column(name="id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var
     * @ORM\OneToMany(targetEntity="Collection", mappedBy="items")
     */
    protected $collection;

    /**
     * @ORM\Column(name="name", type="string")
     */
    protected $name;


    /**
     * @ORM\Column(name="value", type="integer")
     */
    protected $value;

}

Doctrine ORM läuft durch, erstellt mir die Tabellen richtig, aber in der Tabelle items ist kein FK auf collection.id, wie ich nun erwartet hätte.

cu NetBu||
 
selbst rausgefunden:
* @ORM\JoinColumn(name="cid", referencedColumnName="id")
erst dann erstellt orm auch eine Relation
 
Mittlerweile bin ich weiter...

Code der meine Collection erstellt und Items zuweist:
PHP:
$pi1 = new Item();
        $pi1->setInfo('test2');

        $pi2 = new Item();
        $pi2->setInfo('example');

        $pc = new Collection();
        $pc->setId(1);
        $pc->setInfo('test123');
       
        $pc->add($pi1);
        $pc->add($pi2);

        $em = $this->getEntityManager();
        $em->persist($pc);
        $em->flush();

Im Item dann die Collection
PHP:
 /**
     * @var
     * @ORM\ManyToOne(targetEntity="Collection", inversedBy="items")
     * @ORM\JoinColumn(name="cid", referencedColumnName="id")
     */
    protected $collection;

In der Collection dann das hier:
PHP:
/**
     * @var
     * @ORM\OneToMany(targetEntity="Item", mappedBy="items", cascade="all")
     */
    protected $items;

    public function __construct(){
        $this->items = new ArrayCollection();
    }

    public function add(Item $oItem){
        $this->items->add($oItem);
    }

Merkwürdigerweise wird hier, trotz setzen der ID nicht die Collection überschrieben, sondern es wird jedesmal eine neue erzeugt.

Die items haben nun eine Referenz auf die collection, diese ist aber immer NULL.

Wer weis wo ich hier noch drehen muss, ich finde den Fehler nicht.

cu NetBu||
 
Zurück