iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1
Software Development

網頁後端的30件小事系列 第 17

Laravel資料庫:fillable & guarded

  • 分享至 

  • xImage
  •  

前言

https://ithelp.ithome.com.tw/upload/images/20201002/201295562VVvVr0b4h.png

當要新增一筆資料,比方說新的用戶、或新的文章,但遇到上圖的錯誤嗎?
原因是在Laravel Model要修改資料庫資料時,預設是會擋的,除非你把欄位權限打開。
有兩種方法:

  1. 指定哪些可以存(fillable)
  2. 指定哪些不能存(guarded)

實作

例如,我們希望能更新使用者的資料,就必須把對應欄位放進fillable。
在User Model中加入下面的程式碼。

protected $fillable = [
        'name',
        'email',
        'password',
    ];

如果懶了一一列出,想要全部開放,可以用guarded

protected $guarded = [];

如果只有某一欄位不能更改,例如email

protected $guarded = ['email'];

如果都寫的話?

protected $fillable = [
        'name',
        'email',
        'password',
    ];
protected $guarded = [
        'name',
        'email',
        'password',
    ];

實測結果還是fillable,都可以編輯。

結語

基本上就是fillable或guarded擇一使用;懶得一一列出就用protected $guarded = []
然後輸入更新資料的form裡記得要加@csrf,不然也會跑錯。

詳細可見官方文件

Eloquent: Getting Started


上一篇
php實作儲存密碼和驗證
下一篇
參數物件:物件導向的一種用法
系列文
網頁後端的30件小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言