我有以下在phpMyAdmin中运行的mysql查询,但是我在脑子里试图使用queryBuilder为doctrine / symfony2构建一个等效的教义。
SELECT u.*, ur.*, r.* FROM users u
LEFT JOIN users_roles ur
LEFT JOIN roles r ON ur.roles_id = r.id ON u.id = ur.users_id
请请有人帮助解决symfony2的问题,并尝试解释为什么解决方案有效,以便我可以尝试更好地理解它?
我发现,一旦它变得越来越复杂,我们就会发现它像泥浆一样清晰。
(所有实体都已正确映射并与应用程序的其他部分一起使用。如果需要,可以显示)
非常感谢**编辑以添加关系**
我认为我对这种关系感到困惑。更新架构创建了第三个表,我想我错误地试图在查询中包含它。
有人请帮我查询一个会返回用户详细信息及其相关角色数据的查询吗?
class users implements AdvancedUserInterface, \Serializable
{
/*......*/
/**
* @ORM\ManyToMany(targetEntity="roles", inversedBy="users")
*
*/
private $roles;
/*......*/
}
和
class roles implements RoleInterface
{
/*....*/
/**
* @ORM\ManyToMany(targetEntity="users", mappedBy="roles")
*/
private $users;
/*....*/
答案 0 :(得分:0)
解决了这个问题。
经过多次努力之后,这是我提出的查询。我忽略了JimL所述的关系。$q = $this
->createQueryBuilder('u')
->select('u.username, u.id userID, u.email, u.firstname, u.lastname, u.isActive, u.lastLogged, r.name, r.id')
->leftJoin('u.roles', 'r');