دوستانی که با پکیج لاراول پرمیژن کار کردن یه سوال داشتم
میخوام قسمت model_has_permissions اش رو عوض کنم یعنی میخوام یک column بهش اضافه کنم ولی تو داکیومنتش در این باره چیزی پیدا نکردم
میخوام یک پارامتر به پارامتر های موجود اضافه کنم راه حلی سراغ دارید بگید ممنون میشم؟
سلام خدمت شما این جدول یک جدول واسط هست. و شما میتونید بهش column جدید اضافه کنید. و مشکلی نداره.
به عنوان مثال این یک column من خودم برای پروژه خودم استفاده کردم:
Schema::table('model_has_roles', function (Blueprint $table) {
$table->timestamp('expire_at')->nullable();
});
کد بالا کد مایگریشنش هست. حالا برای دسترسی به این مقدار باید از تابع pivot استفاده کنید.
یا هم من داخل مثلا مدل user اومدم و ریلیشن roles تغییر دادم به این صورت :
/**
* A model may have multiple roles.
*/
public function roles(): MorphToMany
{
return $this->morphToMany(
config('permission.models.role'),
'model',
config('permission.table_names.model_has_roles'),
config('permission.column_names.model_morph_key'),
'role_id'
)->withPivot('expire_at');
}
اینجوری این پیوت هم داخل ریلیشن میاد
برای جدول model_has_permission هم میتونید همین کار ها رو بکنید فقط باید ریلیشن و مایگریشنی که مینویسید مال پرمیشن باشه که توی مثال من برای رول بود
وقتی به pivot table ها column اضافه کنی.. باید توی رابطه بهش اشاره کنی:
return $this->belongsToMany('App\Model')
->withPivot('column');
سلام خدمات همه دوستان
چرا با وجود اضافه کردن Schema::defaultStringLength(191);
در AppServiceProvider همچنان در هنگام migrate کردن به مشکل فوق برخورد میکنم. ممنون
مشکل رو پیدا کردم!
دنبال engine در فایل config/database.php بگردید اگر null بود برابر مقدار InnoDB قرار دهید.
'mysql' => [
'driver' => 'mysql',
...
'engine' => 'InnoDB',
...
]) : [],
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟