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