我有一个使用PHP和MySql构建的域模型和数据映射器。一些域对象仅出现在其他域的上下文中,在这些情况下,我使用依赖映射,即依赖对象没有自己的映射器,而是由其所有者的映射器持久化。
出于性能原因,我正在连接多个表并发出一个SQL查询(而不是每个表一个查询),这就是出现困难的地方:我的查询结果是笛卡尔连接(当然)并且需要一个相当数量的数组筛选以获得用于填充域对象的合理数据。
例如,我有三个表:一个父(P1)和两个孩子(C1和C2)。如果P1中的单个记录在C1和C2中都有两条记录,那么我的结果集中有四条记录。我可以循环遍历结果集数组,寻找唯一值,并从这些数组中创建一个新数组,但这似乎很多工作。
这必然是一个常见问题。解决它的典型方法是什么?我查看了SPL数据结构和迭代器,但没有找到任何有用的东西。除非我真的需要,否则我不想分成多个查询。
谢谢!