我在我的 laravel 項(xiàng)目中使用 space/laravel-menu 和 space/laravel-persmissions。我已經(jīng)創(chuàng)建了一個(gè)權(quán)限,將其分配給一個(gè)角色,并將該角色分配給我的用戶。這很好用。然后我使用像這樣的宏以中間件方式生成了一個(gè)菜單:\Menu::macro('main', function () use ($request) { return \Menu::new()
->withoutWrapperTag()
->withoutParentTag()
->setActiveClassOnLink()
->route('preparation', 'Anstehende Termine')
->route('postprocessing', 'Nachbereitung')
->routeIfCan('administrate', 'protocols', 'Protokolle')
->addItemClass('nav-link')
->setActive($request->url());
});在我的應(yīng)用程序中,我有兩個(gè)具有不同連接的用戶模型: App\User;將 connection_a 與數(shù)據(jù)庫(kù) db_a 結(jié)合使用,并將 App\DirectoryA\User;connection_b 與數(shù)據(jù)庫(kù) db_b 結(jié)合使用在 auth 配置中,第一個(gè)被定義,并且使用Auth::user()->can('administrate')工作正常,即使在定義菜單的中間件中也是如此。由于我已通過(guò) 添加菜單項(xiàng)routeIfCan,因此出現(xiàn)錯(cuò)誤。它說(shuō)未找到基表或視圖:1146 表 'db_b.permissions' 不存在(SQL:選擇. permissions*, .as , model_has_permissions.as model_id, .as from inner join on . = . where . = 1 and . = App\User )pivot_model_idmodel_has_permissionspermission_idpivot_permission_idmodel_has_permissionsmodel_typepivot_model_typepermissionsmodel_has_permissionspermissionsidmodel_has_permissionspermission_idmodel_has_permissionsmodel_idmodel_has_permissionsmodel_type這里出了什么問(wèn)題?它應(yīng)該使用App\User模型。dd()在框架拋出異常的地方放置 a向我顯示正確的連接......請(qǐng)幫忙。
2 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
spatie的一位成員幫助解決了這個(gè)問(wèn)題:
在幕后,routeIfCan 調(diào)用 app(Gate::class)->allows($ability, $ablityArguments)。我認(rèn)為 Gate 在涉及多個(gè)守衛(wèi)時(shí)的行為與 Auth::user() 略有不同。我在 routeIfCan 中看不到太多空間來(lái)添加額外的 $guard 或 $connection 參數(shù),所以我建議你使用 $menu->addIf(Auth::user()->can('administrate'), ...)反而。

揚(yáng)帆大魚(yú)
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
- 2 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報(bào)
0/150
提交
取消