如何更改查询以包含来自加入 table 的数据?

How to change Query to contain data from joined table?

我有简单的实体:

ID
用户名
警卫

"guard" 是来自同一实体的另一个用户的 ID。我必须使用简单的 table:

渲染视图
用户名 |警卫姓名
--------------------------
约翰 |鲍勃

我尝试通过查询来做到这一点:

$ur = $this->getDoctrine()->getRepository(User::class)->createQueryBuilder('u')
            ->leftJoin(User::class, 'u2', \Doctrine\ORM\Query\Expr\Join::WITH, 'u.guard = u2.id')
            ->getQuery()
            ->getResult();

但它只给我 ID 和用户名,没有连接数据。 我知道整个查询应该是这样的:

SELECT
  *
从
  用户 u0_
  LEFT JOIN 用户 u1_ON (u0_.guard = u1_.id)

但我找不到通过 QueryBuilder 实现它然后在 twig 模板中访问它的方法。

此致

好的,我发现了我代码中的错误:

  1. 我试图设置 OneToOne 关系,这是一个小错误,但我在这里需要 ManyToOne。

    /**
     * Many Users have One Guard (User)
     * @ORM\ManyToOne(targetEntity="User")
     */
    private $guard = 0;

  1. 当我这样做时,Symfony 会自动强制我更改我的代码,并且在 "guard" 列中我必须插入用户对象。

  2. 在那之后我不再需要加入 - 只是 select 来自 table 的数据和保护列包括我可以在 Twig 等中使用的用户对象


    namespace AppBundle\Entity;
    use Doctrine\ORM\EntityRepository;

    class UserRepository extends EntityRepository
    {
        public function findAllDB()
        {
            $qb = $this->createQueryBuilder('u');
            $query = $qb->getQuery();
            return $query->execute();
        }
    }