TP6的before_select到底如何用,效果如何?

浏览:656 发布日期:2021/07/20 分类:ThinkPHP6专区
TP6的数据库事件before_select是怎么用的,
研究了一下午,看了一下午源码,也没搞出来怎么用.
这个地方似乎需要返回结果集,比如select的结果,
但是如果使用select,又会触发before_select事件,最后进入死循环.

找了半天也没找到怎么用的,Db::event('before_select', function (Query $query) {
  $model = $query->where('sass_uid', Sass::getUid())->find();

  // dump($sql);

  
  // $query->where('sass_uid', Sass::getUid())->select();

  // $list = Db::query($sql);

  return [$model];
  

  // return true;
});
按照我的理解,只需要在事件里面操作query就可以了,
但是实际上,如果存在事件,就不会进行原有的查询,会把事件的返回当做结果集,这应该是不对的吧.public function select(BaseQuery $query): array
  {
    $resultSet = $this->db->trigger('before_select', $query);

    if (!$resultSet) {
      // 执行查询操作
      $resultSet = $this->pdoQuery($query, function ($query) {
        return $this->builder->select($query);
      });
    }

    return $resultSet;
  }
最佳答案
评论( 相关
后面还有条评论,点击查看>>