我有实体:
class RegionalPartner
{
/**
* @var integer
*
* @ORM\Column(name="direction_id", type="integer")
* @ORM\OneToOne(targetEntity="Direction")
* @ORM\JoinColumn(name="direction_id", referencedColumnName="id")
*/
private $directionId;
...
和关系的目标:
class Direction
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
.....
我有一个存储库:
class RegionalPartnerRepository extends EntityRepository
{
public function findAllWithNames()
{
$query = $this->getEntityManager()
->createQuery('
SELECT
r
FROM
AstRegionalPartnerBundle:RegionalPartner r
JOIN
r.directionId d
');
//->setParameters($params);
return $query->getResult();
有一个错误:
[Semantical Error] line 0, col 108 near 'd': Error: Class Ast\RegionalPartnerBundle\Entity\RegionalPartner has no association named directionId
如何制作正确的关系代码(需要将“方向”的名称命名为“RegionalPartner”实体)?
ORM中的联接文档在哪里?
答案 0 :(得分:0)
使用QueryBuilder并设置正确的选择
$this->createQueryBuilder('r')
->select('d.name')
->innerJoin('r.directionId', 'd')
尽量为你的名字命名。所以directionId - >方向
答案 1 :(得分:0)
class RegionalPartner
{
/**
* @var integer
*
* @ORM\OneToOne(targetEntity="Direction")
* @ORM\JoinColumn(name="direction_id", referencedColumnName="id")
*/
private $directionId;
...
删除了注释的一部分:
* @ORM\Column(name="direction_id", type="integer")