【问题标题】:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles_id' in 'field list' [closed]SQLSTATE [42S22]:未找到列:1054 未知列 \'field list\' 中的 \'roles_id\' [关闭]
【发布时间】:2022-09-28 20:59:59
【问题描述】:

我正在尝试将用户角色及其权限插入到数据透视表中,但是当我尝试提交表单时,它会显示此错误

// This is my Model File

class Roles extends Model
{
    use HasFactory;
    protected $table = \'mq_info_roles\';
    protected $fillable = [\'name_arabic\',\'name_english\',\'status\'];


    public function permissions(){
       return $this->belongsToMany(Permission::class,\'mq_info_permission_roles\');
    }
}

// This is my controller file

 public function store(Request $request){
        $this->validate($request,[
            \'name_arabic\'=>\'required|string\',
            \'name_english\'=>\'required|string\',
        ]);
        $roles  = new Roles();
        $roles->name_arabic = $request->input(\'name_arabic\');
        $roles->name_english = $request->input(\'name_english\');
        $roles->status = $request->input(\'status\') == TRUE?\'1\':\'0\';

        // $roles->save();
        // dd($roles->name_english);
        

        $listOfPermissions = explode(\',\', $request->roles_permissions);

        foreach($listOfPermissions as $permission){
            $permissions = new Permission();
            $permissions->name_english = $permission;
            $permissions->save();

            $roles->permissions()->attach($permissions->id);
            $roles->save();

        }

        return redirect()->route(\'Roles.index\')->with(\'status\',\'Role Added Successfully\');
     
    }

// This is pivot table migration

 Schema::create(\'mq_info_permission_roles\', function (Blueprint $table) {
            
            $table->unsignedBigInteger(\'permission_id\');
            $table->unsignedBigInteger(\'role_id\');

            $table->foreign(\'permission_id\')->references(\'id\')->on(\'mq_info_permissions\')->onDelete(\'cascade\');
            $table->foreign(\'role_id\')->references(\'id\')->on(\'mq_info_roles\')->onDelete(\'cascade\');

            $table->primary([\'permission_id\',\'role_id\']);
            
        });

你能告诉我我犯了什么错误吗?

  • 看起来像类型 role_id vs roles_ID

标签: php mysql laravel


【解决方案1】:

像这样更改您的关系方法:

public function permissions(){
    return $this->belongsToMany(Permission::class, 'mq_info_permission_roles', 'role_id', 'permission_id');
}

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 1970-01-01
    • 2019-01-13
    • 2012-08-18
    • 1970-01-01
    • 2018-02-21
    • 2015-12-08
    相关资源
    最近更新 更多