How to write this SQL query in Doctrine 2.0 (and fetch results)?
(SELECT 'group' AS type, CONCAT(u.firstname, " ", u.surname) as fullname, g.name AS subject, user_id, who_id, group_id AS subject_id, created FROM group_notification JOIN users u ON(who_id = u.id) JOIN groups g ON(group_id = g.id))
UNION
(SELECT 'event' AS type, CONCAT(u.firstname, " ", u.surname) as fullname, e.name AS subject, user_id, who_id, event_id AS subject_id, created FROM event_notification JOIN users u ON(who_id = u.id) JOIN events e ON(event_id = e.id))
ORDER BY created
UNION is not supported in DQL, but you can still write a UNION query and use the Native Query capabilities to retrieve the data:
http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html
However from your example it seems you want to use some form of table per class inheritance, which is not yet supported. There is another form of inheritance, (Joined Table Inheritance) that works though, if you can change your schema.
http://www.doctrine-project.org/projects/orm/2.0/docs/reference/inheritance-mapping/en#class-table-inheritance
A view would be another good solution, but then it depends on your database vendor if it also supports write operations or not.
UNION
is not supported in Doctrine, s. the discussion here.Well, I found maybe the best solution:
And then two classes (NotificationGroup and NotificationEvent) extending Notification: