hiscaler
(Hiscaler)
1
Yii
$criteria = new CDbCriteria;
$criteria->select = array('你要查询的字段');
$res = Model::model()->findAll($cirteria);
QeePHP
$res = Model::find()->setColumns(array('要查询的字段'))->getAll();
个人感觉 Qeephp 这样更方便一点,Yii 每次都要 CDBCriteria 有点麻烦。
jerry2801
(Jerry2801)
3
不支持,qee在模型操作方面下了大功夫,特别是关联操作,不过缺点也是显然而见的,就是复杂的框架代码,不利于框架的升级
yii虽然连基本的关联操作都没有做,正因为如此,核心代码可以写的更为简单和有效,yii的关联查询、读取方面,还是做得非常不错的~
qiang
(Qiang Xue)
5
你可以使用数组表达criteria:
$models=Post::model()->findAll(array(
'select'=>'title, author',
'condition'=>'xxx',
'order'=>'xxx',
));
任何CDbCriteria的属性都可以在上述数组里指定。
要实现连贯操作并不难,之所以没实现出于两个考虑:
-
连贯操作函数名占据了额外的命名空间
-
在实践中,我们往往需要把查询条件当作参数传递。连贯操作在这方面无能为力。
jerry2801
(Jerry2801)
6
qiang,请教一个问题,
我想做一个 RecycleBin 的行为插件,初步想法是在插件中,利用 beforeFind() 事件,
增加 is_recycled=0 的条件,
现在遇到的问题是,我是否能够在插件中的 beforeFind() 事件中 获取到所有的查询条件?
因为我需要判断,当前查询,是否有包括 is_recycled 的条件,假如有,则不做任何处理,
假如没有,则默认给增加 is_recycled=0 的条件~
即:
Post::model()->findAll(); – 会默认给加上 is_recycled=0的条件
Post::model()->findAll(array(‘condition’=>‘is_recycled=1’)); – 插件将不加任何查询条件
qiang
(Qiang Xue)
7
你可以在beforeFind()里修改ar的criteria属性,添加这个条件。不过目前AR的实现你无法在插件里知道查询的条件。你可以提交一个ticket。
jerry2801
(Jerry2801)
8