php - 在 Active Record 样式 ORM 中实现预加载的干净方法?

标签 php orm activerecord

我正在用 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/

相关文章:

php - 拆分长 php 生成的 HTML 表?

PHP 使用 mail() 发送 html - 某些服务器以文本形式接收

php - Laravel Eloquent ORM 中的 join()->where()

ruby-on-rails-3 - 如何取消 before_add 关联回调中的保存?

php - 上传图片时出错没有这样的路径或目录

php - RiakCS S3 PHP 客户端库

java - hibernate 拦截器后保存?

sql - 何时在 ORM 中使用复合主键模型进行 INSERT 或 UPDATE?

ruby-on-rails - 如何在 Rails 中拥有基于非查询的范围

php - CodeIgniter、Active Record 还是查询生成器?