think-orm icon indicating copy to clipboard operation
think-orm copied to clipboard

数据库查询事件,对聚合查询无效,是有意为之还是有问题?

Open augushong opened this issue 4 years ago • 2 comments

直接调用或者查询字段,不支持数据库的查询事件,会支持吗?

$list_party_admin->column('party_id');

augushong avatar Aug 23 '21 05:08 augushong

查询事件仅支持了find和select查询的 其它的目前确实不支持

liu21st avatar Aug 24 '21 06:08 liu21st

能否考虑增加一个类似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_selectbefore_find,统一都改成before_read.不过这样改动了旧的接口.

再或者依次增加before_column,before_sum之类的事件.这样似乎相比于其他的改动不是复杂.

augushong avatar Aug 24 '21 07:08 augushong