DDC-698: Many-To-Many Bidirectional #858

Open
opened 2026-01-22 12:52:54 +01:00 by admin · 0 comments
Owner

Originally created by @doctrinebot on GitHub (Jul 19, 2010).

Originally assigned to: @guilhermeblanco on GitHub.

Jira issue originally created by user vigor_bg:

When calling many to many bidirectional from the mapped by side returns SQL error

$qb->add('select', 'p, r')
           ->add('from', 'Privileges p')
           ->leftJoin('p.roles', 'r');

        $privileges = $qb->getQuery()
                         ->getArrayResult();
Notice: Undefined index: privilegeID in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Query/SqlWalker.php on line 758 
Notice: Undefined index: in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Mapping/ClassMetadata.php on line 220 
Notice: Undefined index: roleID in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Query/SqlWalker.php on line 782 
Notice: Undefined index: in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Mapping/ClassMetadata.php on line 220 
SELECT p0*.privilegeID AS privilegeID0, p0_.name AS name1, r1_.roleID AS roleID2, r1_.name AS name3, r1_.shortName AS shortName4 FROM Privileges p0_ LEFT JOIN RolePrivileges r2_ ON p0_. = r2_.privilegeID LEFT JOIN Roles r1_ ON r1_. = r2*.roleID
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= r2*.privilegeID LEFT JOIN Roles r1_ ON r1_. = r2*.roleID' at line 1

And here are my entityes:

/****
 *
 * @Table(name="Roles")
 * @entity
 */

class Role 
{
    /****
     *  @Id  @Column(name="roleID", type="integer")
     *  @GeneratedValue(strategy="AUTO")
     *
     */
    protected $roleID;

    /****
     * @Column(name="name", type="string", length="45")
     *
     *
     */
    protected $name;

    /****
     * @Column(name="shortName", type="string", length="45")
     *
     *
     */
    protected $shortName;



    /****
     * @ManyToMany(targetEntity="Users*Model_Entity*Privileges", inversedBy="roles")
     * @JoinTable(name="RolePrivileges",
     *      joinColumns={@JoinColumn(name="roleID", referencedColumnName="roleID")},
     *      inverseJoinColumns={@JoinColumn(name="privilegeID", referencedColumnName="privilegeID")}
     *      )
     */
    protected $privilege;

}


/****
 *
 * @Table(name="Privileges")
 * @entity(repositoryClass="Users*Model*UserRepo")
 */

class Privileges
{
    /****
     *  @Id  @Column(name="privilegeID", type="integer")
     *  @GeneratedValue(strategy="AUTO")
     *
     */
    protected $privilegeID;

    /****
     * @Column(name="name", type="string", length="45")
     *
     *
     */
    protected $name;

    /****
     * @ManyToMany(targetEntity="Users*Model_Entity*Role", mappedBy="privilege")
     */
    protected $roles;
}
Originally created by @doctrinebot on GitHub (Jul 19, 2010). Originally assigned to: @guilhermeblanco on GitHub. Jira issue originally created by user vigor_bg: When calling many to many bidirectional from the mapped by side returns SQL error ``` $qb->add('select', 'p, r') ->add('from', 'Privileges p') ->leftJoin('p.roles', 'r'); $privileges = $qb->getQuery() ->getArrayResult(); ``` ``` Notice: Undefined index: privilegeID in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Query/SqlWalker.php on line 758 Notice: Undefined index: in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Mapping/ClassMetadata.php on line 220 Notice: Undefined index: roleID in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Query/SqlWalker.php on line 782 Notice: Undefined index: in /home/vis/projects/CRM/trunk/library/Doctrine/ORM/Mapping/ClassMetadata.php on line 220 SELECT p0*.privilegeID AS privilegeID0, p0_.name AS name1, r1_.roleID AS roleID2, r1_.name AS name3, r1_.shortName AS shortName4 FROM Privileges p0_ LEFT JOIN RolePrivileges r2_ ON p0_. = r2_.privilegeID LEFT JOIN Roles r1_ ON r1_. = r2*.roleID ``` ``` SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= r2*.privilegeID LEFT JOIN Roles r1_ ON r1_. = r2*.roleID' at line 1 ``` And here are my entityes: ``` /**** * * @Table(name="Roles") * @entity */ class Role { /**** * @Id @Column(name="roleID", type="integer") * @GeneratedValue(strategy="AUTO") * */ protected $roleID; /**** * @Column(name="name", type="string", length="45") * * */ protected $name; /**** * @Column(name="shortName", type="string", length="45") * * */ protected $shortName; /**** * @ManyToMany(targetEntity="Users*Model_Entity*Privileges", inversedBy="roles") * @JoinTable(name="RolePrivileges", * joinColumns={@JoinColumn(name="roleID", referencedColumnName="roleID")}, * inverseJoinColumns={@JoinColumn(name="privilegeID", referencedColumnName="privilegeID")} * ) */ protected $privilege; } /**** * * @Table(name="Privileges") * @entity(repositoryClass="Users*Model*UserRepo") */ class Privileges { /**** * @Id @Column(name="privilegeID", type="integer") * @GeneratedValue(strategy="AUTO") * */ protected $privilegeID; /**** * @Column(name="name", type="string", length="45") * * */ protected $name; /**** * @ManyToMany(targetEntity="Users*Model_Entity*Role", mappedBy="privilege") */ protected $roles; } ```
admin added the Bug label 2026-01-22 12:52:54 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#858