我在laravel 5.4中使用Doctrine 2.0創建了一個簡單的項目。我有三個表格:用戶,角色,user_roles。從HEIDISQL表模式截圖我在下面:laravel中的學說,獲取所有用戶的職責
我有三個實體類每張桌子當然:
<?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;
}
}
我有一個問題,當我試圖檢索角色的特定用戶的教條實體Managar。我嘗試這樣做,以這種方式:
public function showUserRoles(EntityManagerInterface $em){
$userRoles = $em->getRepository('\TodoList\Http\Entities\UserRole');
$userRoles->findBy(['user' => 2]);
//count($userRole);
}
有一個錯誤的方法,從findBy 錯誤消息:
(1/1)FatalErrorException
主義\ COMMON \代理\ AbstractProxyFactory :: getProxyDefinition(): 失敗開口需要 'C:\ XAMPP \ htdocs中\項目\存儲\ proxies__CG__TodoListHttpEntitiesRole.php' (include_path中= 'C:\ XAMPP \ PHP \ PEAR')
我的實體有問題嗎?我不知道我怎麼能解決這個問題。有人可以幫助我嗎? 我會非常greateful 最好的問候;)
學說配置不正確。 –
我怎樣才能配置學說propery? –
正式的學說文件就足夠了。尤其是代理目錄必須設置,並且必須可由Web服務器進程寫入 –