user()->givePermissionsTo([' delete posts','delete users']); })->name('index'); این خط ...' /> user()->givePermissionsTo([' delete posts','delete users']); })->name('index'); این خط ...' />
🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ اعظم السادات حسینی
ارور wherein
جامعه لاراول ایجاد شده در ۲۱ مرداد ۱۴۰۲

سلام وقتی من اینجوری توی روت میزنم

Route::get('/', function () {
    auth()->user()->givePermissionsTo([' delete posts','delete users']);
})->name('index');

این خطا رو به من میده:Nested arrays may not be passed to whereIn method.

و در جدول permission userچیزی اضافه نمیکنه

اینم کل فایل haspermission


namespace App\\Services\\Permission\\Traits;
use App\\Models\\Permission;
trait HasPermissions
{
    public function permissions()
    {
        return $this->belongsToMany(Permission::class,'permission_user');
    }
    public function givePermissionsTo(...$permissions)
    {
        $permissions = $this->getAllPermissions($permissions);
        if ($permissions->isEmpty()) return $this;
        $this->permissions()->syncWithoutDetaching($permissions);
        return $this;
    }
    public function withdrawPermissions(...$permissions)
    {
        $permissions = $this->getAllPermissions($permissions);
        $this->permissions()->detach($permissions);
        return $this;
    }
    protected function getAllPermissions(array $permissions)
    {
        return Permission::whereIn('name', array_flatten($permissions))->get();
    }
}

ممنون میشم راهنماییم کنید

سلام،

helper‌ها در نسخه جدید لاراول تغییر کرده و در نسخه جدید بجای array_flatten باید از Arr::flatten استفاده کنید.

لینک داکیومنت

محسن موحد ۲۱ مرداد ۱۴۰۲، ۰۸:۴۶

از این هم استفاده کردم ولی وقتی روت را با ارایه میدهم این ارور میده و وقتی هم بدون ارایه میدم هم ذخیره در دیتابیس نمیشه

وقتی یکی بهش میدم

Illuminate\\Database\\Eloquent\\Collection {#1330 ▼ // app\\Services\\Permission\\Traits\\HasPermissions.php:20
  #items: array:1 [▼
    0 => App\\Models\\Permission {#1329 ▼
      #connection: "mysql"
      #table: "permissions"
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      +preventsLazyLoading: false
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #escapeWhenCastingToString: false
      #attributes: array:5 [▶]
      #original: array:5 [▶]
      #changes: []
      #casts: []
      #classCastCache: []
      #attributeCastCache: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #fillable: []
      #guarded: array:1 [▶]
    }
  ]
  #escapeWhenCastingToString: false
}

اینو نمایش میده ولی در جدول ذخیره نمیشه

اعظم السادات حسینی ۲۱ مرداد ۱۴۰۲، ۰۹:۰۲

پروژه تون رو زیپ کنید پیوست کنید یا روی گیت هاب بگذارید تا بررسی بشه.

بهترین پاسخ
محسن موحد ۲۲ مرداد ۱۴۰۲، ۲۱:۴۴