2012-05-03 18 views
0

私はこのサイトのいくつかの質問に従ってきましたが、セットアップに何が問題なのかまだ分かりませんでした。私はしばらく困惑してしまった。申し訳ありませんが、これが基本的な間違いであれば、私はDoctrineをまだ新しくしています。ありがとうございました。doctrine 2 join association not found

私が手にエラーがある:

Error: Class models\\Classes_users has no association named users_username... 

クエリは次のとおりです。

SELECT u FROM models\Classes_users c JOIN c.users_username u WHERE c.class_id = 1 

エンティティ:

/** 
* models\Classes_users 
* 
* @Table(name="classes_users") 
* @Entity 
*/ 
class Classes_users 
{ 
    ... 

    /** 
    * @var string $users_username 
    * 
    * @Id 
    * @ManyToOne(targetEntity="Users", inversedBy="users_username") 
    * @JoinColumn(name="users_username", referencedColumnName="users_username") 
    * @Column(name="users_username", type="integer", precision=0, scale=0, nullable=false, unique=false) 
    */ 
    private $users_username; 

    ... 
} 



/** 
* models\Users 
* 
* @Table(name="users") 
* @Entity 
*/ 
class Users 
{ 
    .... 

    /** 
    * @var string $users_username 
    * @Id 
    * @OneToMany(targetEntity="Classes_users", mappedBy="users_username") 
    * @Column(name="users_username", type="string") 
    */ 
    private $users_username; 

    .... 
} 
+0

あなたはここで達成するために何を探しているのですか?ここの人々が、必要なマッピングとアノテーションについての解決策を手伝ってくれるかもしれません。 – Broncha

答えて

2

私はあなたが達成したいのかを正確に知っていません、私はエンティティのあなたのデザインは少し "奇妙な"と思う、私はあなたの参照のためにここにいくつかのコードを投稿:

/** 
* models\Classes_users 
* 
* @Table(name="classes_users") 
* @Entity 
*/ 
class Classes_users 
{ 
    ... 
    /** 
    * @Id 
    */ 
    private $class_id; // use other varible as Id 

    /** 
    * @ManyToOne(targetEntity="Users", inversedBy="user_usernames") 
    * @JoinColumn(name="user_id", referencedColumnName="id") 
    **Delect this line =>** * @Column(name="users_username", type="integer", precision=0, scale=0, nullable=false, unique=false) 
    */ 
    private $user; // change name to user, this varible is a virtual variable, only make sense in php objects, there would not be a real column in database, but a user_id column produced by Doctrine instead 

    ... 
} 



/** 
* models\Users 
* 
* @Table(name="users") 
* @Entity 
*/ 
class Users 
{ 
    .... 
    /** 
    * @Id 
    * 
    */ 
    $private id; // use other variable as Id 


    /** 
    * @var string $users_username 
    * @Id 
    * @OneToMany(targetEntity="Classes_users", mappedBy="user") 
    **Delect this line =>** * @Column(name="users_username", type="string") 
    */ 
    private $user_usernames; // suggest change name to reflect the one to many associations, this variable should be an arraycollection, and there would not be a real column in database 

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

    .... 
} 

今、あなたがあなたのクエリを変更することができます。

は、uはあなたがsymfonyのを使用している場合c.class_id = 1

は、私にはわからないu.user_usernames cを登録しようUsers \ユーザーモデルからUを選択して、しかし、私はあなたが読むことをお勧めしますthis link