Mohsen Mohammadi
3 سال پیش توسط Mohsen Mohammadi مطرح شد
2 پاسخ

خطا در ACL Permission and Role لاراول ۸

سلام وقت بخیر دوست عزیز
برنامه دچار خطا شده هرکی نظری داره بگه امتحان کنم . ممنون
 تصویر

اینم کدها

  public function up()
    {

        Schema::create('roles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('title')->nullable();
            $table->timestamps();
        });
        Schema::create('permissions', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('title')->nullable();
            $table->timestamps();
        });

        Schema::create('role_user', function (Blueprint $table) {
            $table->unsignedBigInteger('role_id');
            $table->unsignedBigInteger('user_id');

            $table->foreign('role_id')
                ->references('id')
                ->on('roles')
                ->onDelete('cascade')
                ->onUpdate('cascade');

            $table->foreign('user_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');

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

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

            $table->foreign('role_id')
                ->references('id')
                ->on('roles')
                ->onDelete('cascade')
                ->onUpdate('cascade');

            $table->foreign('permission_id')
                ->references('id')
                ->on('permissions')
                ->onDelete('cascade')
                ->onUpdate('cascade');
            $table->primary(['permission_id','role_id']);
        });

    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('permission_and_roles');

    }

migation موفق نشه که جدول رو بسازه پس توی refresh هم پاک نمیکنه . جدول رو, باید دستی به phpmyadmin مراجعه کنید و جدول role_user رو حذف میکنم


ثبت پرسش جدید
میلاد قربانی
تخصص : php laravel
@miladghorbani006 2 سال پیش مطرح شد
2

سلام
increments : unsignedInteger هستش پس کلید های شما هم باید unsignedInteger باشه بجای unsignedBigInteger


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش مطرح شد
0

سلام به شما دوست عزیز.
به مسیر زیر برید:

app/Providers/AuthServiceProvider

اگر داخل فانکشن boot گیت (Gate) تعریف کردین کامنت کنید و دستور زیر رو وارد کنید:

php artisan migrate:fresh

همچنین دیتابیستونو میتونید تمیزتر بنویسید که میشه به صورت زیر:

public function up()
    {

        Schema::create('roles', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('title')->nullable();
            $table->timestamps();
        });
        Schema::create('permissions', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('title')->nullable();
            $table->timestamps();
        });

        Schema::create('role_user', function (Blueprint $table) {
            $table->foreignId('role_id')->constrained('roles')->cascadeOnUpdate()->cascadeOnDelete();
            $table->foreignId('user_id')->constrained('users')->cascadeOnUpdate()->cascadeOnDelete();
            $table->primary(['role_id','user_id']);
        });

        Schema::create('permission_role', function (Blueprint $table) {
            $table->foreignId('permission_id')->constrained('permissions')->cascadeOnUpdate()->cascadeOnDelete();
            $table->foreignId('role_id')->constrained('roles')->cascadeOnUpdate()->cascadeOnDelete();
            $table->primary(['permission_id','role_id']);
        });

    }

موفق باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام