If it's the DBAL query builder, then it should just work. I wouldn't use the query builder though, as you don't really get any abstraction from it with this kind of query (unless you need some dynamic bits in it)
Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/ On 30 June 2016 at 20:54, Evan Young <[email protected]> wrote: > Ok, so I can't do a subquery in the FROM clause, so how do I do it then? > This is DBAL querybuilder. > > $this->connection = > Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config); > > > This is where the $queryBuilder comes from: > > private $queryBuilder; > > function __construct($aQueryBuilder) > { > $this->queryBuilder = $aQueryBuilder; > > } > > > > > On Thursday, June 30, 2016 at 8:12:02 AM UTC-5, Marco Pivetta wrote: >> >> What is `$this->queryBuilder`? Seems like you are calling it on a string? >> >> Also, subqueries are not supported in the `FROM` clause. Is this the ORM >> query builder, or the DBAL one (SQL based)? >> >> Marco Pivetta >> >> http://twitter.com/Ocramius >> >> http://ocramius.github.com/ >> >> On 30 June 2016 at 15:10, Evan Young <[email protected]> wrote: >> >>> >>> >>> On Thursday, June 30, 2016 at 1:54:57 AM UTC-5, Evan Young wrote: >>>> >>>> I'm a fairly newbie to Doctrine. I've run into a query that I can't >>>> find any tutorials or answers on how to perform it through querybuilder. >>>> Any assistance would be so very much appreciated. Here is my sql query >>>> that I'm trying to perform: >>>> SELECT COUNT(mwl.IDENTIFIER) FROM (SELECT MOVIE_ID, PERSON_ID, >>>> IDENTIFIER, MAX( TIMESTAMP ) FROM MOVIE_WATCHLIST WHERE MOVIE_ID = 2 >>>> OR MOVIE_ID = 3 or MOVIE_ID = 0 GROUP BY PERSON_ID) AS mwl LEFT JOIN >>>> PERSON p ON mwl.PERSON_ID = p.IDENTIFIER WHERE p.MOVIE_CODE_FAVORITE = >>>> 1 OR p.MOVIE_CODE_FAVORITE = 2 >>>> >>>> >>>> >>>> >>>> This does not work: >>>> >>>> $this->queryBuilder >>>> ->select("COUNT('mwl.IDENTIFIER')") >>>> ->from("(SELECT MOVIE_ID, PERSON_ID, IDENTIFIER, MAX( TIMESTAMP ) FROM >>>> MOVIE_WATCHLIST WHERE MOVIE_ID = 2 OR MOVIE_ID = 3 or MOVIE_ID = 0 GROUP >>>> BY PERSON_ID)", "mwl") >>>> ->leftJoin("p", "PERSON", "mwl", "mwl.PERSON_ID = p.IDENTIFIER") >>>> ->where("p.MOVIE_CODE_FAVORITE = 1") >>>> ->andWhere("p.MOVIE_CODE_FAVORITE = 2"); >>>> >>>> This is the error that I get: >>>> >>>> Fatal error: Call to a member function select() on string >>>> >>>> >>> Here is the full Stacktrace, which just shows the page that calls the >>> database function and the database function page that calls the actual >>> function that throws the error: >>> >>> Call Stack >>> #TimeMemoryFunctionLocation >>> 1 0.0010 130376 {main}( ) ...\dashboard.php*:*0 >>> 2 0.0750 518368 database_access->movieObtained( ) ...\dashboard.php*:*70 >>> 3 0.0751 519632 movAdmin->movieObtained( ) ...\dba.php*:*273 >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "doctrine-user" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/doctrine-user. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "doctrine-user" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/doctrine-user. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "doctrine-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/doctrine-user. For more options, visit https://groups.google.com/d/optout.
