2011-03-25 44 views
4

我正在编写一个非常轻量级的ActiveRecord实现。我有基本的工作,但我想实现至少一对一的关系的急切加载。我一直在用干净的方式集思广益。干净的方式来实现活跃记录样式ORM的急切加载?

如果我急于加载一个一对一的关系,我将不得不知道两个表的列,并且必须按照某些约定来别名列,以便将结果映射回到正确的对象。

我在寻找关于如何将每个表的列别名化的建议,以便将它们映射回它们各自的对象是尽可能无痛的。

我最初的想法是将基表的列别名称为“base_column_name”,相关的表列作为“user_email”(如果“用户”是相关对象的名称)。有没有更好的方法来做到这一点,我忽略了?

我考虑过的第二个选项是将所有对象从基表中取出,然后使用基表中的键将相关对象收集到一个“WHERE IN”中。但是,这会造成性能问题吗?

回答

0

CakePHP在其ActiveRecord实现中使用php的灵活关联数组。因此,一个一对多的关系可能是

array('Tablename'=>array('columnname'=>'columnvalue'), 
     'AssociatedTable'=>array('0', 
      array('columnname'=>'columnvalue'))); 

它放在一个更层中的一切,所以你要做的$数据[“表名”] [“列名”];