我正在使用Zizaco Entrust,我正在开发的平台允许用户创建新角色,但是当我声明哪些角色在Web中具有访问权限时.php我想是动态的。
这是我的网络.php
Auth::routes();
use IlluminateSupportFacadesDB;
Route::get('/', function () {
return view('welcome');
});
Route::group(['middleware'=> 'revalidate'], function(){
$a = DB::table('roles')->where('acceso', true)->get();
foreach ($a as $item) {
$array[] = $item->name;
}
list($keys,$values) = array_divide($array);
$newArray = array_except($values, ['superadmin']);
$b = implode('|', $newArray);
Route::group(['prefix' => 'ControlPanel', 'middleware' => ['auth', 'role:superadmin|' . $b], 'namespace' => 'controlpanel'], function () {
// Dashboard
Route::resource('/', 'DashboardController');
// Donantes
Route::resource('/donantes','DonanteController');
// Tarjetas de creditos donantes
Route::resource('/tarjetas','TarjetaController');
// Paises
Route::resource('/paises','PaisController');
// Tipos de donantes
Route::resource('/tipo-donantes','TipoDonanteController');
// Montos de donaciones
Route::resource('/monto-donaciones','MontoDonacionController');
// Roles administrativos
Route::resource('/roles-administrativos','RoleController');
// Administrativo
Route::resource('/administradores','UserController');
// Administrativo
Route::resource('/configuraciones','ConfigController');
// Administrativo
Route::resource('/monedas','MonedaController');
// Transacciones
Route::resource('/transacciones','TransaccionController');
// Calendario
Route::resource('/calendario','CalendarioController');
// Calendario
Route::resource('/campaigns','CampaignController');
// User information
Route::any('/user/{id}','QueryController@user');
// Actualizar informacion dashboard
Route::get('/update-data/ledger','UpdateDataController@ledger');
// Processar tarjetas programadas
Route::get('/processcards','UpdateDataController@processcards');
// ipaccess
Route::resource('/ipaccess','IpController');
// Log files
Route::resource('/logfiles','LogfileController');
});
});
但是当我运行php artisan migrate
时,我收到此错误:
[IlluminateDatabaseQueryException]
SQLSTATE[42P01]: Undefined table: 7 ERROR: no existe la relación «roles»
LINE 1: select * from "roles" where "acceso" = $1
^ (SQL: select * from "roles" where "acceso" = 1)
[PDOException]
SQLSTATE[42P01]: Undefined table: 7 ERROR: no existe la relación «roles»
LINE 1: select * from "roles" where "acceso" = $1
首先我不明白为什么php artisan migrate
指向web.php
.
有人有想法吗?
谢谢!
如果您查看 Illuminate 源代码,您会发现artisan
是用于控制台的应用程序的容器化版本,或者换句话说,它是 Container
的实例。因此,它所经历的引导过程与应用程序作为完整堆栈运行时的引导过程大致相同。因此,数据库层自然会绑定到容器。这就是为什么你看到你的错误。您认为命令php artisan route:list
如何工作?它必须启动应用程序,注册路由器并映射路由,这意味着访问路由文件。
至于错误,您是否事先迁移了数据库?我的西班牙语说得不太好,但这似乎是在说角色表不存在。 如果已迁移但仍看到错误,请为所有DB::
调用指定数据库连接,如下所示:
$a = DB::connection('my_connection')->table('roles')->where('acceso', true)->get();