2017-08-03 15 views
0

Doctrine 2.0のlaravel 5.4で簡単なプロジェクトを作成しました。私は3つのテーブルを持っています:ユーザーロールuser_roles。 HEIDISQLからテーブルスキーマからのスクリーンショット私は以下を示しています。すべてのユーザーの役割を取得するlarvelのDoctrine

ユーザーadas

役割enter image description here

user_rolesenter image description here

私は3つのエンティティクラスのを持っています各テーブルのコース:

<?php 
namespace TodoList\Http\Entities; 

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 



/** 
* @ORM\Entity 
* @ORM\Table(name="users") 

*/ 

class User 
{ 


    /** 
    * @ORM\Id 
    * @ORM\GeneratedValue 
    * @ORM\Column(type="integer") 
    * 
    */ 
    private $id; 
    /** 
    * 
    * @ORM\Column(type="string") 
    * 
    */ 
    private $name; 
    /** 
    * 
    * @ORM\Column(type="string") 
    * 
    */ 
    private $email; 

    /** 
    * @ORM\OneToMany(targetEntity="Task", mappedBy="user", cascade={"persist"}) 
    * @var ArrayCollection|Task[] 
    */ 
    private $tasks; 
    /** 
    * @ORM\OneToMany(targetEntity="UserRole", mappedBy="user") 
    */ 
    protected $user_roles; 


    /** 
     * User constructor 
     * @param @name 
     * @param @email 
     * @param $password 
     */ 
    public function __construct($name, $email) { 


     $this->name = $name; 
     $this->email = $email; 
     $this->tasks = new ArrayCollection(); 
     $this->user_roles = new ArrayCollection(); 
    } 

    /** 
     * 
     * @return mixed 
     * 
     * 
     */ 

    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getEmail() 
    { 
     return $this->email; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getTasks() 
    { 
     return $this->tasks; 
    } 
    public function addTask(Task $task) 
    { 
     if(!$this->tasks->contains($task)) { 

      $task->setUser($this); 
      $this->tasks->add($task); 
     } 
    } 
    public function getId(){ 

     return $this->id; 
    } 
    public function getUserRoles(){ 

     return $this->user_roles; 
    } 


} 


<?php 
namespace TodoList\Http\Entities; 

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 
/** 
* @ORM\Entity 
* @ORM\Table(name="roles") 
* 
*/ 
class Role{ 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

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

    /** 
    * @var string 
    * 
    * @ORM\Column(name="description", type="text") 
    */ 
    private $description; 

    /** 
    * @ORM\OneToMany(targetEntity="UserRole", mappedBy="role",cascade={"persist"}) 
    */ 
    protected $user_roles; 

    public function getId(){ 

     return $this->id; 

    } 
    public function getName(){ 

     return $this->name; 
    } 
    public function getDescription(){ 

     return $this->description; 

    } 

} 


<?php 
namespace TodoList\Http\Entities; 
use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 
/** 
* @ORM\Entity 
* @ORM\Table(name="user_roles") 
*/ 
class UserRole 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 
    /** 
    * 
    * @ORM\ManyToOne(targetEntity="User", inversedBy="user_roles") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    * 
    */ 
    private $user; 

    /** 
    * 
    * @ORM\ManyToOne(targetEntity="Role", inversedBy="user_roles") 
    * @ORM\JoinColumn(name="role_id", referencedColumnName="id") 
    */ 
    private $role; 

    public function setUser(User $user) 
    { 
     $this->user = $user; 

     return $this; 
    } 

    /** 
    * Get user 
    * 
    * @return \NVC\UserBundle\Entity\User 
    */ 
    public function getUser() 
    { 
     return $this->user; 
    } 

    /** 
    * Set recipe 
    * 
    * @param \NVC\RecipeBundle\Entity\Recipe $recipe 
    * @return UserRecipeAssociation 
    */ 
    public function setRole(Role $role) 
    { 
     $this->role = $role; 

     return $this; 
    } 

    /** 
    * Get recipe 
    * 
    * @return \NVC\RecipeBundle\Entity\Recipe 
    */ 
    public function getRole() 
    { 
     return $this->role; 
    } 
} 

doctrine Entity Managarによって特定のユーザーの役割を取得しようとしているときに問題があります。エラーメッセージがある findBy方法から

public function showUserRoles(EntityManagerInterface $em){ 

     $userRoles = $em->getRepository('\TodoList\Http\Entities\UserRole'); 
     $userRoles->findBy(['user' => 2]); 
     //count($userRole); 


    } 

エラーがあります:

(1/1)FatalErrorException
教義\共通\私はそのようにすることをやろうとしていますプロキシ\ AbstractProxyFactory :: getProxyDefinition(): (のinclude_path = 'C:\ XAMPPの\ PHPの\のPEAR')

: 失敗した開口部が '\ xamppの\ htdocsに\プロジェクト\ストレージ\ proxies__CG__TodoListHttpEntitiesRole.php C' を必要と

私のエンティティに問題はありますか?私はその問題をどうやって解決できるのか分かりません。誰かが私を助けることができますか? 私は 敬具非常にgreatefulだろう;)

+0

教義適切に構成されていません。 –

+0

どのように私はdoctrineのプロパティを設定できますか? –

+0

公式のDoctrineのドキュメントで十分です。特に、プロキシディレクトリは設定されていなければならず、Webサーバープロセスによって書き込み可能でなければなりません –

答えて

0

君は書き込み可能なフォルダC:\xampp\htdocs\Project\storage\proxies\を設定する必要があり、その後、あなたは、コンソールコマンドでプロキシを生成する必要があります。

doctrine:generate:proxies 
関連する問題