php - 如何解决laravel中Database Seeder的问题
问题描述
我正在使用 databaseeder 将控制器的名称存储在权限表中,但我不知道为什么会出现错误。该表与使用 belongsToMany 关系的角色表有关系。 这是我的 Role.php
public function permissions()
{
return $this->belongsToMany(Permission::class)->withTimeStamps();
}
这是我的 Permission.php
protected $fillable=['id','name','controller'];
public function roles()
{
return $this->belongsToMany(Role::class)->withTimeStamps();
}
这是我的databaseSeeder.php
$superrole= Role::create([
'name'=>'super admin',
]);
$permission_ids = [];
$route_name = [];
$controllers = [];
foreach (Route::getRoutes()->getRoutes() as $route)
{
$action = $route->getAction();
if (array_key_exists('as', $action)) {
$route_name = $action['as'];
}
if (array_key_exists('uses', $action)) {
$controllers = $action['uses'];
}
$permission_check = Permission::whereIn('name' , $route_name)
->whereIn('controller' , $controllers)->first();
if(!$permission_check)
{
$permission = new Permission;
$permission->controller = $controllers;
$permission->name = $route_name;
$permission->save();
$permission_ids[] = $permission->id;
}
}
$superrole->permissions()->attach($permission_ids);
但是当我尝试运行 db:seed iam 时出现此错误] 1 这是 dd($controllers)
解决方案
推荐阅读
- apache-kafka - 将数据从 Snowflake 移动到 Kafka
- c# - 为什么编译器不让我设置只读结构的属性?
- python - 无法使用 anaconda 在 Windows 上安装 tensorflow
- haskell - 如何使免费的 monad 解释器递归?
- python - 在python中实现归并排序
- javascript - 使用带有代码注入而不是线程的 NodeVM 时防止无限循环
- python - Flask-Sqlalchemy 无法提交对数据库的更改
- api - /api/v1/search/order - Sw 6.2.2 - 内部服务器错误
- java - 无法使用 FireFox 浏览器启动 geckodriver - java.lang.NoClassDefFoundError: org/openqa/selenium/os/WindowsUtils
- apache-spark-sql - 用于 Databricks 的 Spark SQL - 外部输入 ')' 期望 [...]