LaravelDb
websocket模式下,請求參數(shù)$page通過websocket json傳輸,自行解析,傳入后報(bào)錯。
看報(bào)錯是request()中沒有拿到參數(shù),但參數(shù)通過websocket傳,如果是自己解析的話,好像是拿不到這些
->paginate() 有一樣的問題
$data = ImRecord::orderBy('id', 'desc')
->simplePaginate(page: $page);
Error: Call to a member function path() on null in D:\phpstudy_pro\WWW\im\vendor\workerman\webman-framework\src\support\bootstrap\LaravelDb.php:104
Stack trace:
#0 [internal function]: support\bootstrap\LaravelDb::support\bootstrap\{closure}()
#1 D:\phpstudy_pro\WWW\im\vendor\illuminate\pagination\AbstractPaginator.php(481): call_user_func(Object(Closure))
#2 D:\phpstudy_pro\WWW\im\vendor\illuminate\database\Eloquent\Builder.php(918): Illuminate\Pagination\AbstractPaginator::resolveCurrentPath()
#3 D:\phpstudy_pro\WWW\im\app\support\utils\WebSocketUtils.php(93): Illuminate\Database\Eloquent\Builder->simplePaginate(15, Array, 'page', 1)
這里寫觸發(fā)報(bào)錯的步驟
"workerman/webman-framework": "^1.4.3",
"webman/gateway-worker": "^1.0"
"illuminate/database": "^9.34",
"illuminate/pagination": "^9.34",
改下本地 vendor/workerman/webman-framework/src/support/bootstrap/LaravelDb.php ,你截圖里代碼改成這樣
if (class_exists(Paginator::class)) {
Paginator::queryStringResolver(function () {
$request = request();
return $request ? $request->queryString(): '';
});
Paginator::currentPathResolver(function () {
$request = request();
return $request ? $request->path(): '';
});
Paginator::currentPageResolver(function ($page_name = 'page') {
$request = request();
if (!$request) {
return 1;
}
$page = (int)($request->input($page_name, 1));
return $page > 0 ? $page : 1;
});
}