محمد میرزاخانی
9 ماه پیش توسط محمد میرزاخانی مطرح شد
6 پاسخ

خطای seed در لاراول

سلام دوستان من موقع استفاده از دستور

php artisan db:seed

خطای زیر را میگیرم

  INFO  Seeding database.

   BadMethodCallException 

  Call to undefined method App\Models\Permission::setContainer()

  at D:\xampp\htdocs\Shop-Api\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php:71
     67▕      * @throws \BadMethodCallException
     68▕      */
     69▕     protected static function throwBadMethodCallException($method)
     70▕     {
  ➜  71▕         throw new BadMethodCallException(sprintf(
     72▕             'Call to undefined method %s::%s()', static::class, $method
     73▕         ));
     74▕     }
     75▕ }

  i   Bad Method Call: Did you mean App\Models\Permission::setConnection() ?

  1   D:\xampp\htdocs\Shop-Api\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php:36
      Illuminate\Database\Eloquent\Model::throwBadMethodCallException("setContainer")

  2   D:\xampp\htdocs\Shop-Api\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:2330
      Illuminate\Database\Eloquent\Model::forwardCallTo(Object(Illuminate\Database\Eloquent\Builder), "setContainer")

کسی میدونه مشکل کار کجاس؟


ثبت پرسش جدید
محمد میرزاخانی
@mirzamohammad.com 9 ماه پیش مطرح شد
1

@FullStack
ممنون از شما مشکلم حل شد مشکل در databaseSeeder بود
کد اشتباه

  Permission::class,
            Role::class,

کد درست

  PermissionSeeder::class,
            RoleSeeder::class,

محمد میرزاخانی
@mirzamohammad.com 9 ماه پیش مطرح شد
0

کسی نبود ؟


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 9 ماه پیش مطرح شد
0

سلام خسته نباشید
میتونم کد های seed و مدل رو ببینم ظاهرا که توی مدل مشکلی هست چیزی تععریف کردی که توی مدل تعریف نکردی


محمد میرزاخانی
@mirzamohammad.com 9 ماه پیش مطرح شد
0

بله بله
این مدل permission

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Permission extends Model
{
    protected $guarded =[];

    use HasFactory;
}

این مدل role

<?php

namespace App\Models;

use App\Models\Permission;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Role extends Model
{
    use HasFactory;

    protected $guarded =[];

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

این permissionSeeder

<?php

namespace Database\Seeders;

use App\Models\Permission;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class PermissionSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //Categories Permissions
        Permission::query()->insert([
            [
                'title'=>'create-category',
                'label'=>'ایجاد دسته بندی',
            ],

            [
                'title'=>'read-category',
                'label'=>'مشاهده دسته بندی',
            ],

            [
                'title'=>'update-category',
                'label'=>'ویرایش دسته بندی',
            ],

            [
                'title'=>'delete-category',
                'label'=>'حذف دسته بندی',
            ],
        ]);

        //Brands Permissions
        Permission::query()->insert([
            [
                'title'=>'create-brand',
                'label'=>'ایجاد برند',
            ],

            [
                'title'=>'read-brand',
                'label'=>'مشاهده برند',
            ],

            [
                'title'=>'update-brand',
                'label'=>'ویرایش برند',
            ],

            [
                'title'=>'delete-brand',
                'label'=>'حذف برند',
            ],
        ]);

        //Products Permissions
        Permission::query()->insert([
            [
                'title'=>'create-product',
                'label'=>'ایجاد محصول',
            ],

            [
                'title'=>'read-product',
                'label'=>'مشاهده محصول',
            ],

            [
                'title'=>'update-product',
                'label'=>'ویرایش محصول',
            ],

            [
                'title'=>'delete-product',
                'label'=>'حذف محصول',
            ],
        ]);

        //discount(number%) Permissions
        Permission::query()->insert([
            [
                'title'=>'create-discount',
                'label'=>'ایجاد تخفیف',
            ],

            [
                'title'=>'read-discount',
                'label'=>'مشاهده تخفیف',
            ],

            [
                'title'=>'update-discount',
                'label'=>'ویرایش تخفیف',
            ],

            [
                'title'=>'delete-discount',
                'label'=>'حذف تخفیف',
            ],
        ]);

        //offers(discount-code) Permissions
        Permission::query()->insert([
            [
                'title'=>'create-offer',
                'label'=>'ایجاد کد تخفیف',
            ],

            [
                'title'=>'read-offer',
                'label'=>'مشاهده کد تخفیف',
            ],

            [
                'title'=>'update-offer',
                'label'=>'ویرایش کد تخفیف',
            ],

            [
                'title'=>'delete-offer',
                'label'=>'حذف کد تخفیف',
            ],
        ]);

        //role Permissions
        Permission::query()->insert([
            [
                'title'=>'create-role',
                'label'=>'ایجاد نقش',
            ],

            [
                'title'=>'read-role',
                'label'=>'مشاهده نقش',
            ],

            [
                'title'=>'update-role',
                'label'=>'ویرایش نقش',
            ],

            [
                'title'=>'delete-role',
                'label'=>'حذف نقش',
            ],
        ]);

        //dashboard Permissions
        Permission::query()->insert([
            [
                'title'=>'view-dashboard',
                'label'=>'مشاهده داشبورد',
            ]
        ]);

        //gallery Permissions
        Permission::query()->insert([
            [
                'title'=>'create-gallery',
                'label'=>'ایجاد گالری',
            ],

            [
                'title'=>'read-gallery',
                'label'=>'مشاهده گالری',
            ],

            [
                'title'=>'update-gallery',
                'label'=>'ویرایش گالری',
            ],

            [
                'title'=>'delete-gallery',
                'label'=>'حذف گالری',
            ],
        ]);

    }
}

این roleSeeder

<?php

namespace Database\Seeders;

use App\Models\Permission;
use App\Models\Role;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class RoleSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //super admin role
        $superadmin=Role::query()->create([
            'title'=>'super-admin',
        ]);
        $superadmin->permissions()->attach([Permission::all()]);
         //normal user role
         Role::query()->create([
            'title'=>'normal-user',
        ]);
    }
}

اینم از database seeder

<?php

namespace Database\Seeders;

//use Illuminate\Database\Console\Seeds\WithoutModelEvents;

use App\Models\Permission;
use App\Models\Role;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([
            Permission::class,
            Role::class,
        ]);
    }
}

@FullStack


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 9 ماه پیش آپدیت شد
0

خوب فیلد هارو توی مدل تعریف کن تا مدل بشناسه title, label رو به این صورت

protected $fillable = [
'title',
'label'
];

ببین مشکلت حل میشه یا نه


محمد میرزاخانی
@mirzamohammad.com 9 ماه پیش مطرح شد
0

@FullStack
انجام دادم ولی متاسفانه نشد


محمد میرزاخانی
@mirzamohammad.com 9 ماه پیش مطرح شد
1

@FullStack
ممنون از شما مشکلم حل شد مشکل در databaseSeeder بود
کد اشتباه

  Permission::class,
            Role::class,

کد درست

  PermissionSeeder::class,
            RoleSeeder::class,

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

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