I have a question about the translation of a SQL query in Doctrine Symfony. I would like to do a thing like that :
SELECT m.*
FROM member m
INNER JOIN (
SELECT id_member
FROM friend
WHERE id_friend=99
UNION
SELECT id_friend
FROM friend
WHERE id_member=99
) a ON m.id=a.id_member
WHERE m.visible=1
In this example, i search all friends of the user 99.
My tables :
Member: (id, name, visible)
Friend: (id, id_member, id_friend, active)
Precision : I would like to use the Symfony pager.
A solution ? Thank you !
The UNION operator is used to combine the data from the result of two or more SELECT command queries into a single distinct result set. This operator removes any duplicates present in the results being combined.
Symfony provides all the tools you need to use databases in your applications thanks to Doctrine, the best set of PHP libraries to work with databases. These tools support relational databases like MySQL and PostgreSQL and also NoSQL databases like MongoDB.
The SQL UNION command allows you to display records from two different tables or queries as though they were in one table. The UNION Command can only be used in SQL Direct mode. Views are similar to Queries, but with several differences: Not all database connections allow for Views.
UNION is not supported within DQL, but you can issue your query using RAW SQL ->
$q = Doctrine_Manager::getInstance()->getCurrentConnection();
$result = $q->execute(" -- RAW SQL HERE -- ");
Other alternative to @ManseUK is:
$em = $this->getEntityManager();
$connection = $em->getConnection();
$statement = $connection->prepare("-- RAW SQL HERE --");
$statement->execute();
return $statement->fetchAll();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With