Laravel 使用firstOrCreate 報錯MassAssignmentException


今天嘗試使用firstOrCreate去優化一段查找不到即創建的代碼,結果發現會報MassAssignmentException錯誤,提示我參數錯誤,去網上找了好久沒有找到結果,最后慶幸自己解決了,把自己的解決辦法分享給大家。當laravel調用firstOrCreate時其實是相當於一個批量賦值的操作,

但是,在此之前,你需要指定模型的fillableguarded屬性,因為所有Eloquent模型都通過批量賦值(Mass Assignment)進行保護。

當用戶通過 HTTP 請求傳遞一個不被期望的參數值時就會出現安全隱患,然后該參數以不被期望的方式修改數據庫中的列值。例如,惡意用戶通過 HTTP 請求發送一個is_admin參數,然后該參數映射到模型的create方法,從而允許用戶將自己變成管理員。

所以,你應該在模型中定義哪些屬性是可以進行賦值的,使用模型上的$fillable屬性即可實現。然后在自己的模型里面設置對應的白名單就解決問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM