我正在与Zizaco Entrust合作,我开发的平台允许用户创建新角色,但当我宣布哪些角色可以访问web.php时,我希望是动态的。
这是我的web.php
Auth::routes();
use Illuminate\Support\Facades\DB;
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
时,我收到此错误:
[Illuminate\Database\QueryException]
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
。
有人有想法吗?
谢谢!
答案 0 :(得分:0)
如果您查看Illuminate源代码,您会发现artisan
是控制台应用程序的容器化版本,或者Container
的实例。因此,它与完整堆栈运行时应用程序执行的引导过程大致相同。所以数据库层自然会绑定到容器。这就是你看到错误的原因。您如何假设命令php artisan route:list
有效?它必须启动应用程序,注册路由器并映射路由,这意味着访问路由文件。
至于错误,您是否事先迁移了数据库?我不会说西班牙语,但似乎说角色表并不存在。如果您已迁移并仍然看到错误,请为所有DB::
调用指定数据库连接,如下所示:
$a = DB::connection('my_connection')->table('roles')->where('acceso', true)->get();