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发现:

Laravel

将第一条sql放入到mysql查询发现查询不到,但是数据库是存在的:

Laravel

Laravel

后边发现是mysql对反斜线查询有点问题,将sql改成双反斜线后能够查询到:

Laravel

问题找到了,laravel-permission在底层绑定的数据是单反斜线,数据库需要双反斜线才能够查询到,所以想咨询大家怎么去改动才能解决这个BUG呢,laravel-permission 5.6 5.8尝试了都有这个问题。

3. 您期望得到的结果?

4. 您实际得到的结果?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 6

不知道是不是绑定参数的问题,在查询时传入绑定参数时这么写试试 App\Models\Admin::class

8个月前 评论
EdwinYang (楼主) 8个月前

应该不是斜杠的问题,你这个地方只是打印的DB::getQueryLog()出来的参数,实际执行的sql会给斜杠加转义符变成App\\Models\\Admin。我感觉应该看下其他地方的问题

8个月前 评论
神的孩子丶都在跳舞 (作者) 8个月前
EdwinYang (楼主) 8个月前
addslashes(Menu::class)
8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!