关于全局查询范围和数据库查询事件,是我操作问题还是bug问题

浏览:1309 发布日期:2020/03/29 分类:ThinkPHP6专区 关键字: 数据库查询事件 全局查询范围
public function scopeBases(Query $query)
    {
        $id = $query->getPk();
        $tableFields = $query->getTableFields();
        //默认排序
        if (in_array('sort', $tableFields)) {
            $query->order('sort asc')->order("{$id} desc");
        } else {
            $query->order("{$id} desc");
        }
        //默认不包含软删除数据
        if (in_array('is_deleted', $tableFields)) {
            $query->where('is_deleted', 0);
        }
    }
当我用查全局查询范围的时候发现更新这些操作也会触发,不是应该是有查询的时候才触发才对吗,然后我想通过数据库查询事件来实现,然后发现返回只能是返回自己return 的结果,那我怎么能通过查询事件调用query回调得到自己想要的结果,只要定义了查询事件不return,就是返回空,那查询事件的意义有什么,还是我使用的方式不对?Db::event('before_select', function($query){
            $id = $query->getPk();
            $tableFields = $query->getTableFields();
            //默认排序
            if (in_array('sort', $tableFields)) {
                $query->order('sort asc')->order("{$id} desc");
            } else {
                $query->order("{$id} desc");
            }
            //默认不包含软删除数据
            if (in_array('is_deleted', $tableFields)) {
                $query->where('is_deleted', 0);
            }
        });
class Index extends BaseController
{
    public function initialize()
    {
        Db::event('before_find', function($q){
           echo '执行查询';
        });
    }
    public function index()
    {
         halt(Db::name('user')->find(3));
         /*使用数据库查询事件返回结果,只是一个echo就改变了原数据
         array(
             0=>null
         );
         */
         /*不使用查询事件正常返回结果
            array:15 [▼
              "id" => 3
              "headimg" => "1"
              "nickname" => "<p>134355</p>"
              "phone" => null
              "openid" => "<p>sdff</p>"
              "unionid" => null
              "country" => null
              "province" => null
              "city" => null
              "area" => null
              "address" => null
              "pay_pwd" => null
              "money" => "0.00"
              "create_at" => "2020-03-29 11:35:02"
              "update_time" => null
            ]
          */
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>