我正在用PHP编写一个非常轻量级的ActiveRecord实现。我有基础工作,但我想实现至少一对一关系的急切加载。我一直在以干净的方式集思广益。
如果我渴望加载单个一对一关系,我将不得不知道两个表的列,并且必须按照某些约定对列进行别名,这样我才能将结果映射回正确的对象。
我正在寻找有关如何对每个表中的列进行别名的建议,以便将它们映射回各自的对象尽可能轻松。
我最初的想法是将基表的列别名为“base_column_name”,将相关的表列别名为“user_email”(如果“User”是相关对象的名称)。有没有更好的方法来做到这一点,我忽略了?
我考虑的第二个选项是从基表中获取所有对象,然后使用基表中的键将相关对象收集到一个“WHERE IN”中。但是,这会导致性能问题吗?
答案 0 :(得分:0)
CakePHP在其ActiveRecord实现中使用php的灵活关联数组。所以一对多的关系可能是
array('Tablename'=>array('columnname'=>'columnvalue'),
'AssociatedTable'=>array('0',
array('columnname'=>'columnvalue')));
它确实在所有内容中添加了一层,因此您必须执行$ data ['tablename'] ['columnname'];