我必须做一些过滤器,例如获取给定部门的人员,我想知道最好的方法。
其中一些需要连接多个表。
有谁知道之间的主要区别CDbCriteria
和查询生成器?我特别想了解与数据库的兼容性。
我在关于查询生成器的 Yii 文档中找到了这一点:
它提供一定程度的数据库抽象,从而简化了向不同数据库平台的迁移。
CDbCriteria 对象是否相同?好点吗?
的概念CDbCriteria
在使用 Yii 时使用活动记录 http://www.yiiframework.com/doc/guide/1.1/en/database.ar(AR) 抽象(通常是所有时间)。 AR 要求您已创建models http://www.yiiframework.com/doc/guide/1.1/en/database.ar#defining-ar-class对于数据库中的各个表。
查询生成器 http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder一种非常不同的访问数据库的方式;实际上,它是一个结构化包装器,允许您以编程方式构建 SQL 查询,而不仅仅是将其写为字符串(作为额外的好处,正如您提到的,它还提供一定程度的数据库抽象)。
在典型的应用程序中,几乎不需要使用查询生成器,因为 AR 已经提供了大量的功能,并且还提供了相同程度的数据库抽象。
在某些情况下,您可能想要运行非常特定类型的查询,而通过 AR 发出该查询并不方便或性能不佳。然后你有两个选择:
- 如果查询已修复或几乎已修复,那么您只需通过以下方式发出即可DAO http://www.yiiframework.com/doc/guide/1.1/en/database.dao;事实上,查询生成器文档提到“如果您的查询很简单,那么直接编写 SQL 语句会更容易、更快”。
- 如果需要动态构建查询,那么查询构建器就非常适合这项工作。
正如您所看到的,查询生成器在大多数情况下并不是那么有用。仅当您想要编写非常自定义且同时动态构造的查询时,使用它才有意义。
您提到的示例功能可以而且应该使用 AR 来实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)