سلام دوستان من موقع استفاده از دستور
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")
کسی میدونه مشکل کار کجاس؟
@FullStack
ممنون از شما مشکلم حل شد مشکل در databaseSeeder بود
کد اشتباه
Permission::class,
Role::class,
کد درست
PermissionSeeder::class,
RoleSeeder::class,
سلام خسته نباشید
میتونم کد های seed و مدل رو ببینم ظاهرا که توی مدل مشکلی هست چیزی تععریف کردی که توی مدل تعریف نکردی
بله بله
این مدل 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,
]);
}
}
خوب فیلد هارو توی مدل تعریف کن تا مدل بشناسه title, label رو به این صورت
protected $fillable = [
'title',
'label'
];
ببین مشکلت حل میشه یا نه
@FullStack
ممنون از شما مشکلم حل شد مشکل در databaseSeeder بود
کد اشتباه
Permission::class,
Role::class,
کد درست
PermissionSeeder::class,
RoleSeeder::class,
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟