2016-09-27 10 views
3

私はDoctrine 2をSlim 3のORMとして使用していますが、双方向関係を実装しようとするとオブジェクトマッピングセクションに詰まっていますプロパティの "@OneToMany"アノテーションはインポートされませんでした(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(); 
    } 
}  

私は私がしようとすると例外を取得php vendor/bin/doctrine orm:schema-tool:update --force

出力は次のようになります。

[教義\共通\注釈\ AnnotationException] [意味論的エラー]注釈 "@OneToMany" I nプロパティApp \ Entity \ UserRoles :: $ usersはインポートされませんでした。この注釈に「使用」ステートメントを追加することを忘れていましたか?

+0

私はセッターとゲッターとテキストの比率にコードの制約をStackOverflowのに起因するそれぞれのフィールドを削除した –

+1

それは「@ORM \ OneToMany」です。詳細については、 'use'ステートメントを参照してください。 –

+0

@AlexBlexは言った。また、 '' ManyToOne''と '' JoinColumn''に '' @ORM \ ''がありません –

答えて

12

Doctrine\ORM\Mapping名前空間の一部です。

ORMを使用してこの名前空間をエイリアスとしてインポートする必要があります。次に、これらのクラスの前に、アノテーションとして@ORMを追加して機能させる必要があります。

これらのクラスを1つずつ使用する場合は、それぞれ別々にインポートする必要があります。

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

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

あなたの質問==解決策ですか? – danopz

+0

はまだ動作しませんでした。同じエラーが発生しました –

+0

エンティティの上にuseステートメントがありますか? – danopz

関連する問題