बड़े पैमाने पर असाइनमेंट तब होता है जब आप मॉडल निर्माण के लिए एक सरणी भेजते हैं, मूल रूप से एक बार में एक ही बार में मॉडल के खेतों का एक समूह सेट करते हैं, एक के बाद एक, जैसे कुछ:
$user = new User(request()->all());
(यह मॉडल पर प्रत्येक मान को स्पष्ट रूप से अलग से सेट करने के बजाय है।)
आप fillableसुरक्षा के लिए उपयोग कर सकते हैं कि आप किन क्षेत्रों को वास्तव में अपडेट करने की अनुमति देना चाहते हैं।
ऐसा करने से आप सभी क्षेत्रों को बड़े पैमाने पर होने से रोक सकते हैं:
protected $guarded = ['*'];
मान लें कि आपकी उपयोगकर्ता तालिका में आपके पास एक फ़ील्ड है जो user_typeउपयोगकर्ता / व्यवस्थापक के मान हो सकते हैं
जाहिर है, आप नहीं चाहते कि उपयोगकर्ता इस मूल्य को अपडेट कर सकें। सिद्धांत रूप में, यदि आपने उपरोक्त कोड का उपयोग किया है, तो कोई user_typeअन्य प्रपत्र डेटा के साथ 'व्यवस्थापक' भेजने के लिए एक नए फ़ील्ड के रूप में इंजेक्ट कर सकता है , और आसानी से अपने खाते को एक व्यवस्थापक खाते में स्विच कर सकता है ... बुरी खबर।
जोड़ कर:
$fillable = ['name', 'password', 'email'];
आप यह सुनिश्चित कर रहे हैं कि केवल उन्हीं मूल्यों का उपयोग करके अपडेट किया जा सकता है mass assignment
user_typeमूल्य को अपडेट करने में सक्षम होने के लिए , आपको इसे मॉडल पर स्पष्ट रूप से सेट करने और इसे सहेजने की आवश्यकता है, जैसे:
$user->user_type = 'admin';
$user->save();