我需要使用以下代码。我有这两个类:
Class Expert{
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="username", type="string", length=255)
* @Assert\NotBlank()
*/
protected $username;
/**
* @ORM\Column(name="email", type="string", length=255, unique=true)
* @Assert\NotBlank()
*/
protected $email;
/**
* @ORM\Column(name="password", type="string", length=40)
* @Assert\NotBlank()
*/
protected $password;
}
Class Job{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="titulo", type="string", length=255)
* @Assert\NotBlank()
*/
protected $title;
/**
* @ORM\Column(name="description", type="text")
* @Assert\NotBlank()
*/
protected $description;
/**
* @ORM\ManyToOne(targetEntity="Expert")
* @ORM\JoinColumn(name="expert_id", referencedColumnName="id")
*/
protected $assigned_expert;
}
而这个自定义存储库:
class JobRepository extends EntityRepository
{
public function getTechnicianFinishedJobs($id)
{
$Q = $this->getQueryBuilder('j')
->where('j.expert = :expert_id')
->setParameter('expert_id', $id)
->getQuery()
try{
return $q->getResult();
}catch(NoResultException $e){
return false;
}
}
}
当我运行它时,我收到以下错误:
[Semantical Error] line 0, col 68 near 'expert = :e': Error: Class Job has no field or association named expert
这个想法是一个专家可以分配给许多工作,而一份工作可以分配给一个专家。这项工作需要知道谁是指定的专家,而不是反过来,这就是我使用 ManyToOne 单向关联的原因。我尝试将存储库更改为 ->where('j.expert_id = :expert_id') 和其他组合无济于事。
有人可以告诉我我做错了什么吗?
提前致谢。