think-orm
think-orm copied to clipboard
数据库查询事件,对聚合查询无效,是有意为之还是有问题?
直接调用或者查询字段,不支持数据库的查询事件,会支持吗?
$list_party_admin->column('party_id');
查询事件仅支持了find和select查询的 其它的目前确实不支持
能否考虑增加一个类似before_read_field的事件,能够支持column操作和其他聚合操作sum等.
事件接收Query对象和字段的类型,比如column,sum.
就像这样:
Db::event('before_read_field', function (Query $query,$read_option) {
// $read_option = `column`或`sum`
Sass::sqlSelectOption($query);
return $query;
});
我目前在应用内全局注册了这个事件,增加一个通用的查询条件:
$query->where('sass_uid', Sass::getUid());
但是对于sum操作或column操作却要专门写一下这个条件,感觉很不统一.
或者read_option是$query里的一个属性.
再或者干脆把before_select和before_find,统一都改成before_read.不过这样改动了旧的接口.
再或者依次增加before_column,before_sum之类的事件.这样似乎相比于其他的改动不是复杂.