【问题标题】:Using Active Record on object split across two tables in codeigniter在 codeigniter 中跨两个表拆分的对象上使用 Active Record
【发布时间】:2010-08-27 20:38:46
【问题描述】:

我有一个控制器,它在数据库中由两个表 pagespage_contents 表示。 pages 包含作者信息、页面的唯一 ID 和创建时间戳。 page_contents 包含作为 FK 的页面 uid、页面内容、最后编辑器和编辑时间戳。

当它请求一个页面时我需要拉取原作者和创建时间戳,该页面内容的最新修订内容。

我将如何使用活动记录方法来做到这一点?还是我必须使用 $this->db->query(() 和手工制作的 SQL 语句?

【问题讨论】:

  • 什么数据库?问题标记为数据库。请适当修改标签,使其与您的问题相匹配。
  • 什么数据库无关紧要。我在询问 Codeigniter 的数据库抽象层,所以无论我使用什么数据库,它都适用。所以我没有包含任何特定的数据库标签,一般数据库标签。

标签: php database activerecord codeigniter


【解决方案1】:

您可以使用active record library 提供的连接 ($this->db->join();) 方法来指定如何连接两个表,但如果您正在寻找更多的 ORM 样式检索,请尝试 @ 987654322@ 我不能 100% 确定它是否会支持它,但它是像 symfony 这样的框架用来实现这种行为的。

新版 Codeigniter (2.0) 将包含更多 ORM 风格的模型检索。 ORM 是 Kohana(Codeigniter 的一个分支)实际上包括尝试活动记录的重要原因之一。

【讨论】:

  • Doctrine 的替代方案是为 Codeigniter 创建的 Datamapper Overzealous 库 - overzealous.com/dmz
  • @someoneinomaha 你有这方面的经验吗?你有什么看法?
  • 我一直在一个项目中使用它,我已经在工作(非工作时间)大约一年了。我真的很喜欢它。有些事情看起来很奇怪 - 如果您查看分析器,您会看到它在实例化新对象时执行 select @ from table limit 1 ......但是如果您打开缓存,则不再需要这样做那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2011-02-20
相关资源
最近更新 更多