什么是最适合与CodeIgniter(PHP框架)一起使用的ORM,为什么?
正如DrColossos所建议的那样,Doctrine是一个很好而且强大的ORM,可以相对容易地集成到CI应用程序中。 对于CodeIgniter 2和Doctrine 2,您可以使用这篇关于正确设置CodeIgniter 2和Doctrine 2的教程。
这个问题非常模糊,完全取决于使用情况。
无论如何,我更喜欢Doctrine而不是内置的数据库访问,仅仅因为我更喜欢编写查询而不是使用(在我看来奇怪的)CI的DB访问方式。这比CI实现更具面向对象的感觉,非常强大,因为它允许您像常规SQL一样执行相同的操作(复杂的连接、子选择、更高级的WHERE条件)。
我也喜欢它,因为你可以跳进查询过程中,这意味着你可以在查询提交之前、之后执行操作,应用规则等等。我没有看到CI中简单的方法来实现这一点。
阅读文档中的示例,了解我在说什么。
使用Doctrine集成到CI非常容易(互联网上有很多帖子,甚至在SO上也有一些),所以您不必学习任何花哨的新约定。
无论您选择什么,都要记住,任何ORM都会对非常轻量级的框架增加巨大的开销(与CI的基本占用空间相比)。因此,您牺牲了轻量级的特性,换取了强大的数据库功能和更多的抽象。
我更喜欢使用Active Record。它已经存在了,而且我还没有遇到过它不能满足我的需求的情况。我没有在CodeIgniter之上使用其他ORM,但我怀疑在大多数情况下它会增加不必要的层次。
你需要做什么,内置的Active Record工具无法提供?
一个选择是DataMapper ORM:
我认为你应该只使用Active Record,因为大多数情况下,使用另一层抽象(ORM)可能会付出很大的代价。