2011-08-03 7 views
0

私は2つのエンティティを1つのロールとし、その他はユーザーです。フォームとレポートを作成して各ユーザーのロールを追加して表示し、ユーザー:役割は、(1対多)、私は教義2を介してユーザに役割を追加するために管理しますが、それぞれの役割は以下の私のコードDoctrine2の多くの関連付けを取得します

<?php 

/** 
* Description of Role 
* @Entity 
* @Table=(name"Roles") 
* @author alaaqashou 
*/ 
class Role { 
//put your code here 

/** 
* 
* @var integer $id 
* @Column(name="id", type="integer",nullable=false) 
* @Id 
* @GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** 
* @Column(length=100,nullable=false,unique=true) 
* @var type 
*/ 

private $name; 

/** 
* @OneToMany(targetEntity="User" ,mappedBy="Role") 
* @var type 
*/ 

private $users; 

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

public function getUsers() { 
    return $this->users; 
} 

public function setUsers($user) { 
    $this->users->add($user); 
} 

} 

/** 
* Description of User 
*@Entity 
* @Tabel(name="Users") 
* @author alaaqashou 
*/ 
class User { 
//put your code here 

/** 
* 
* @var integer $id 
* @Column(name="id", type="integer",nullable=false) 
* @Id 
* @GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** 
* 
* @Column(length=255,nullable=false,unique=true) 
* 
* 
* @var type 
* 
*/ 

private $role; 

function __construct() { 
    $this->created=new \DateTime(date("Y-m-d H:i:s")); 
} 

public function getRole() { 
    return $this->role; 
} 

public function setRole($role) { 
    $this->role = $role; 
} 

} 

私が注目して頂けれあちこちに私は、ユーザーを表示することができません:未定義のインデックス:役割を私は、次の

私のサービス

 public function listAllRole() 
     { 
    return $this->em->getRepository('sihha\Entity\Role')->findAll(); 

    } 
$roles=$this->roleService->listAllRole(); 

$users=$roles[0]->getUsers(); 
// I even tried $users=$roles[0]->getUsers()->toArray(); 

$user=$users[0]; 
をしようとするエラー

助けてください!

+0

DoctrineArrayCollectionの要素にアクセスできませんが、奇妙なことは可能ですか? $ role-> getUsers() - > add($ user); – AlaaQash

答えて

1

あなたの問題は注釈にあると思います。 mappedBy='Role'の幅をmappedBy='role'に変更してください(小文字の "role"と入力してください)。

私はちょうど私のエンティティの1つにmappedBy="Table"を試してみましたが、あなたには同じ結果が与えられました。

+0

私はあなたの答えを見てくれてありがとう、私はそれが正しいと思っていましたが、私はそれをチェックして、今は働いてくれてありがとう、しかし、なぜIamはこのような奇妙なエラーに直面することを恐れ、理由!! – AlaaQash

+0

私はDoctrineのドキュメントを二重にチェックしました。私はあなたのコードの構文を検証することができないので、苦しんでいます。今後のzendのリリースでは、doctrineを統合することを願っています。 – AlaaQash

+0

Doctrine docsからの引用: "mappedBy属性は、関係の所有者であるエンティティのフィールドを指定します。" (http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html) 基本的に、デフォルトでは、任意のプロパティのフィールド名が小文字になっていると思います。アノテーション '@ORM \ Column(name = "[field_name]")を使用して変更できます。たとえば、name属性を 'Field_name'に設定する場合、mappedBy = 'Field_name'を使用する必要があります。 – gilden

関連する問題