laravel-permission反斜线BUG怎么破?
1. 运行环境
1). 当前使用的 Laravel 版本?
9.33.0
2). 当前使用的 php/php-fpm 版本?
PHP 版本:8.1.12
php-fpm 版本:PHP 8.1.12 (fpm-fcgi) (built: Oct 28 2022 18:58:25)
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies
with Zend OPcache v8.1.12, Copyright (c), by Zend Technologies
3). 当前系统
docker环境基于镜像php:8.1.12-fpm-alpine3.16
4). 业务环境
开发环境
5). 相关软件版本
laravel-permission5.8
mysql5.7
2. 问题描述?
在使用laravel-permission5.8版本的时候通过用户模型调用getPermissionsViaRoles()方法不能查询到对应的权限,通过打印sql发现:
将第一条sql放入到mysql查询发现查询不到,但是数据库是存在的:
后边发现是mysql对反斜线查询有点问题,将sql改成双反斜线后能够查询到:
问题找到了,laravel-permission在底层绑定的数据是单反斜线,数据库需要双反斜线才能够查询到,所以想咨询大家怎么去改动才能解决这个BUG呢,laravel-permission 5.6 5.8尝试了都有这个问题。
不知道是不是绑定参数的问题,在查询时传入绑定参数时这么写试试
App\Models\Admin::class
。应该不是斜杠的问题,你这个地方只是打印的
DB::getQueryLog()
出来的参数,实际执行的sql会给斜杠加转义符变成App\\Models\\Admin
。我感觉应该看下其他地方的问题