আমি লারাভেল ৪.২ ব্যবহার করছি।
ত্রুটি আপনি দেখতে পাচ্ছেন
[Illuminate\Database\Eloquent\MassAssignmentException]
username
প্রকৃতপক্ষে এটি কারণ ডেটাবেসটি ম্যাসে ভরাট থেকে সুরক্ষিত, আপনি যখন একজন বীজকারীকে সম্পাদন করছেন তখন আপনি যা করছেন। যাইহোক, আমার মতে, আপনার যদি কেবল একজন বীজ চালানোর প্রয়োজন হয় তবে আপনার মডেলটিতে কোন ক্ষেত্রগুলি পরিপূর্ণ করতে হবে তা ঘোষণা করার জন্য এটি প্রয়োজনীয় নয় (এবং এটি নিরাপত্তাহীন হতে পারে)।
আপনার বীজ ফোল্ডারে আপনার ডেটাবেসসিডার শ্রেণি রয়েছে:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
এই শ্রেণিটি ফেকড হিসাবে কাজ করে, মৃত্যুদণ্ড কার্যকর করা দরকার এমন সমস্ত বীজ তালিকাভুক্ত করে। আপনি যদি php artisan db:seed --class="UsersTableSeeder"কমান্ড দিয়ে যেমন কারিগর দ্বারা ম্যানুয়ালি ইউজারবেবলসিডার সিডারকে কল করেন , আপনি এই ডেটাবেসসিডার শ্রেণিকে বাইপাস করুন।
এই ডেটাবেসসিডার শ্রেণিতে কমান্ডটি Eloquent::unguard();সমস্ত টেবিলগুলিতে অস্থায়ী ভর অ্যাসাইনমেন্টের অনুমতি দেয়, যা আপনি যখন ডাটাবেস বীজ করার সময় আপনার প্রয়োজন ঠিক তেমন হয়। আপনি যখন php aristan db:seedকমান্ডটি চালান তখনই এই অযুগয়ার্ড পদ্ধতিটি কার্যকর করা হয় , সুতরাং এটি আপনার মডেলগুলিতে ক্ষেত্রগুলি পরিপূর্ণ করে তোলার বিরোধী হিসাবে অস্থায়ী হয়ে উঠেছে (যেমন স্বীকৃত এবং অন্যান্য উত্তরে বলা হয়েছে)।
আপনাকে যা করতে হবে তা হ'ল $this->call('UsersTableSeeder');ডেটাবেসসিডার ক্লাসে রান পদ্ধতিতে যুক্ত করুন php aristan db:seedএবং আপনার সিএলআইতে চালানো যা ডিফল্টরূপে ডেটাবেসসিডার কার্যকর করবে।
এছাড়াও লক্ষ করুন যে আপনি বহুবচন শ্রেণীবদ্ধ ব্যবহারকারী ব্যবহার করছেন, যখন লারাভাল একক রূপ ব্যবহারকারী ব্যবহার করে। আপনি যদি নিজের ক্লাসটি প্রচলিত একবচন রূপে পরিবর্তন করার সিদ্ধান্ত নেন, আপনি কেবলমাত্র //$this->call('UserTableSeeder');যা ইতিমধ্যে বরাদ্দ করা হয়েছে তবে ডেটাবেসসিডার শ্রেণিতে ডিফল্টরূপে মন্তব্য করেছেন তাতে আপত্তি করতে পারেন ।