研究了一下午,看了一下午源码,也没搞出来怎么用.
这个地方似乎需要返回结果集,比如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;
} 最佳答案