如何在Doctrine 2.0中编写此SQL查询(并获取结果)?
(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
好吧,我发现也许是最好的解决方案:
/** * @Entity * @InheritanceType("JOINED") * @DiscriminatorColumn(name="discr", type="string") * @DiscriminatorMap({"group" = "NotificationGroup", "event" = "NotificationEvent"}) */ class Notification { // ... }
然后是两个类( NotificationGroup 和 NotificationEvent ),它们扩展了 Notification :
/** * @Entity */ class NotificationGroup extends Notification { //... } /** * @Entity */ class NotificationEvent extends Notification { //... }