मैं लारवेल 4.2 का उपयोग कर रहा हूं।
त्रुटि आप देख रहे हैं
[Illuminate\Database\Eloquent\MassAssignmentException]
username
वास्तव में क्योंकि डेटाबेस को एन मास्क भरने से सुरक्षित किया जाता है, जो कि आप तब कर रहे होते हैं जब आप बीजारोपण कर रहे होते हैं। हालांकि, मेरी राय में, यह घोषित करना आवश्यक नहीं है (और असुरक्षित हो सकता है) कि आपके मॉडल में कौन से फ़ील्ड भरने योग्य होने चाहिए, अगर आपको केवल एक बीजर को निष्पादित करने की आवश्यकता है।
आपके सीडिंग फ़ोल्डर में आपके पास डेटाबेससाइडर क्लास है:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
यह वर्ग एक मुखौटा के रूप में कार्य करता है, उन सभी बीजों को सूचीबद्ध करता है जिन्हें निष्पादित करने की आवश्यकता होती है। यदि आप UserTableSeeder सीडर को कारीगर के माध्यम से मैन्युअल रूप से कॉल करते हैं, जैसे आपने php artisan db:seed --class="UsersTableSeeder"
कमांड के साथ किया था , तो आप इस DatabaseSeeder वर्ग को बायपास करते हैं।
इस DatabaseSeeder वर्ग में कमांड Eloquent::unguard();
सभी तालिकाओं पर अस्थायी बड़े पैमाने पर असाइनमेंट की अनुमति देता है, जो कि आपको डेटाबेस की सीडिंग करते समय ठीक उसी प्रकार की आवश्यकता होती है। जब आप php aristan db:seed
कमांड चलाते हैं, तो यह अनजाने तरीके को निष्पादित किया जाता है , इसलिए यह आपके मॉडल में फ़ील्ड को भरने योग्य बनाने के विपरीत अस्थायी है (जैसा कि स्वीकृत और अन्य उत्तरों में कहा गया है)।
आपको बस $this->call('UsersTableSeeder');
डेटाबेससेडर क्लास में रन विधि को जोड़ने और php aristan db:seed
अपने सीएलआई में चलाने की ज़रूरत है जो डिफ़ॉल्ट रूप से डेटाबेससेडर को निष्पादित करेगा।
यह भी ध्यान दें कि आप एक बहुवचन वर्गनाम उपयोगकर्ताओं का उपयोग कर रहे हैं, जबकि लारवल एकवचन रूप उपयोगकर्ता का उपयोग करते हैं। यदि आप अपनी कक्षा को पारंपरिक एकवचन के रूप में बदलने का निर्णय लेते हैं, तो आप बस उसे अनइंस्टॉल कर सकते हैं //$this->call('UserTableSeeder');
जो पहले ही असाइन किया गया है, लेकिन डेटाबेससेडर वर्ग में डिफ़ॉल्ट रूप से टिप्पणी की गई है।