我有简单的实体:
id username guard
“guard”是来自同一实体的另一个用户的id。我必须用简单的表格渲染视图:
username | name of guard ------------------------- John | Bob
我试图通过查询来做到这一点:
$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 * FROM user u0_ LEFT JOIN user u1_ ON (u0_.guard = u1_.id)
但我找不到通过QueryBuilder实现它的方法,然后在twig模板中访问它。
此致
答案 0 :(得分:0)
好的,我发现了代码中的错误:
/** * Many Users have One Guard (User) * @ORM\ManyToOne(targetEntity="User") */ private $guard = 0;
当我这样做时,Symfony会自动强制我更改我的代码,而在“guard”栏中我必须插入User对象。
之后我不再需要加入 - 只需从表中选择数据,保护列包括我可以在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(); } }