原则:如何从具有不同子句的两个表中获取两个实体的对象?



有两个实体类,我想在一个查询中从MySQL表中获取它们的对象:

SELECT d, e 
FROM OrganizerBundle:DailyTask d, OrganizerBundle:Event e
WHERE d.weekday = 'all' OR DATE_FORMAT(e.date,'%Y-%m-%d') = :date

如您所见,我需要工作日 = 'all' 的每日任务和日期 = :d ate 的事件。问题是 - WHERE 仅适用于第一个表(工作日 = 'all'(+ 我从第二个表中获取所有对象。如何分隔两个实体的 WHERE 子句?

如上所述,在教义2中,你想要的是不可能的。

您声明要从此数据生成一个表。我建议使用本机SQL,并使用MySQL的强大INSERT INTO ... SELECT ...

我不知道你的表结构是什么,你的新表和旧表,所以我只是猜测UNION可以帮助您将其放在单个查询中,否则只需使用两个不同的插入。

请注意,当两个表具有相似的结构时,UNION大多是整洁的。我从您的实体名称中猜测,事件和每日任务都有日期和其他一些公共字段。

你会得到这样的东西:

$em = $this->getDoctrine()->getManager(); $sql = "INSERT INTO newtable (date, description) SELECT date, description FROM (SELECT date, description FROM dailytask WHERE weekday = 'all') UNION (SELECT date, description FROM event WHERE DATE_FORMAT(e.date,'%Y-%m-%d') = ?)"; $stmt = $em->getConnection()->prepare($sql); $stmt->execute();

相关内容

  • 没有找到相关文章

最新更新