2016-09-27 1 views
3

Ich bin für Slim 3 mit Lehre 2 als ORM arbeiten, aber ich behalte im Objektabbildungsabschnitt stecken zu bleiben, wenn ich versuche, eine bidirektionale Beziehung zu implementierenDie Anmerkung „@OneToMany“ in Hause wurde nie eingeführt (Doctrine2)

/** 
* Class Resource 
* @package App 
* @ORM\Entity 
* @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="user_id", columns={"user_id"})})) 
*/ 
class User 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="UserRoles", inversedBy="users") 
    * @ORM\JoinColumn(name="role_id", referencedColumnName="user_role_id") 
    */ 
    protected $user_role; 
} 

/** 
* Class Resource 
* @package App 
* @ORM\Entity 
* @ORM\Table(name="user_roles", uniqueConstraints={@ORM\UniqueConstraint(name="user_role_id", columns={"user_role_id"})})) 
*/ 
class UserRoles 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="User", mappedBy="user_role") 
    */ 
    protected $users; 

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

ich erhalte eine Ausnahme, wenn ich versuche php vendor/bin/doctrine orm:schema-tool:update --force

Die Ausgabe lautet:

[Lehre \ Common \ Annotations \ AnnotationException] [Semantische Fehler] Die Anmerkung "@OneToMany" i Die Eigenschaft App \ Entity \ UserRoles :: $ users wurde nie importiert. Haben Sie vielleicht vergessen, für diese Anmerkung eine "use" -Anweisung hinzuzufügen?

+0

Ich habe die Setzer und die Getter und jeweilige Bereiche entfernt Aufgrund Stackoverflow constraint Codetextverhältnisses –

+1

Es ist „@ORM \ OneToMany“. Weitere Informationen finden Sie in den Verwendungshinweisen. –

+0

Was @AlexBlex sagte. Sie vermissen auch '' @ORM \ '' für '' ManyToOne'' und '' JoinColumn'' –

Antwort

12

Lehre Klassen wie

sind Teil des Doctrine\ORM\Mapping Namespace.

Sie sollten diesen Namespace mit ORM als Alias ​​importieren. Dann sollten Sie @ORM vor diesen Klassen als Annotation hinzufügen, damit sie funktionieren.

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\ManyToOne(...) 
* @ORM\JoinColumn(...) 
*/ 

Wenn Sie nur jedes einzelne dieser Klassen verwenden wollen, müssen Sie jeweils separat importieren.

use Doctrine\ORM\Mapping\ManyToOne; 
use Doctrine\ORM\Mapping\JoinColumn; 

/** 
* @ManyToOne(...) 
* @JoinColumn(...) 
*/ 
+0

verwendet. Ihre Frage == Lösung? – danopz

+0

funktionierte immer noch nicht .. den gleichen Fehler erhalten –

+0

Haben Sie die Verwendungsaussage oben auf Ihren Entitäten? – danopz

Verwandte Themen