database - Join multiple Tables including 2 join Tables -


i try join multiple tables in 1 query.

my entitie relations:

person

entities\person:   type: entity   table: person   manytoone:     address:       targetentity: address       joincolumn:         name: idaddress         referencedcolumnname: idaddress   manytomany:     tags:       targetentity: tag       jointable:         name: persons_tags         joincolumns:           person_idperson:             referencedcolumnname: idperson         inversejoincolumns:           tag_idtag:             referencedcolumnname: idtag 

tag

entities\tag:   type: entity   table: tag   manytomany:     sms:       targetentity: sms       mappedby: tag 

sms

  manytomany:     tag:       targetentity: tag       jointable:         name: sms_tags         joincolumns:           sms_idsms:             referencedcolumnname: idsms         inversejoincolumns:           tag_idtag:             referencedcolumnname: idtag 

this valid working sql statement:

select distinct person.lastname, person.firstname, address.mobileprivate, address.mobilebusiness     `address`,     `person`,     `persons_tags`,     `sms_tags`     person.idaddress = address.idaddress     , person.idperson = persons_tags.person_idperson     , persons_tags.tag_idtag = sms_tags.tag_idtag     , sms_tags.sms_idsms = (myinput) 

now try join needed entities in dql same result:

select distinct s, t, p,  entities\sms s  join s.sms_idsms t  join t.person_idperson p  join p.idaddress  s.idsms = (myinput) 

but error:

php fatal error:  uncaught exception 'doctrine\\orm\\query\\queryexception' message ' select distinct s, t, p,  entities\\sms s  join s.sms_idsms t  join t.person_idperson p  join p.idaddress  s.idsms = 2' in  /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/queryexception.php:39 stack trace: #0 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(429): doctrine\\orm\\query\\queryexception::dqlerror('select distinct...') #1 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(925): doctrine\\orm\\query\\parser->semanticalerror('class entities\\...') #2 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(1561): doctrine\\orm\\query\\parser->joinassociationpathexpression() #3 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(1506): doctrine\\orm\\query\\parser->joinassociationdeclaration() #4 /var/www/ci_ in /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/queryexception.php on line 49 

how write dql query working sql query?

i try avoid native sql query

here try query builder:

    $qb->select(array('s', 't', 'p', 'a'))        ->from('entities\sms', 's')        ->leftjoin('s.tag', 't')        ->leftjoin('t.person', 'p')        ->leftjoin('p.address', 'a')        ->where('s.idsms = 1'); 

and error message

php fatal error:  uncaught exception 'doctrine\\orm\\query\\queryexception' message 'select s, t, p, entities\\sms s left join s.tag t left join t.person p left join p.address s.idsms = 1' in /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/queryexception.php:39\nstack trace:\n#0 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(429): doctrine\\orm\\query\\queryexception::dqlerror('select s, t, p,...')\n#1 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(925): doctrine\\orm\\query\\parser->semanticalerror('class entities\\...')\n#2 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(1561): doctrine\\orm\\query\\parser->joinassociationpathexpression()\n#3 /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/parser.php(1506): doctrine\\orm\\query\\parser->joinassociationdeclaration()\n#4 /var/www/ci_doc_rem/cod in /var/www/ci_doc_rem/codeigniter_doctrine/source/application/libraries/doctrine/orm/query/queryexception.php on line 49 

the solution easy find.

i've replaced idname namingconvention 'id' every table / entitie , had closer picking owning , inverse side.

http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#picking-owning-and-inverse-side

this enabled me write correct relations.

a big problem me, decode debug stack trace find error.

thanks spend time solve problem!


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -