Laravel model: fillable, guarded

閱讀時間約 3 分鐘
在Model中常看到這兩個屬性fillable, guarded:
protected $fillable=['name','job'];
protected $guarded=['user_id'];
其中guarded是黑名單的意思,fillable則是白名單。
以上面的例子來說,假如我table裡面只有name, job, user_id三個欄位,由於user_id是設為guarded,表示這個欄位不能被塞進去,因此orm轉換後的insert sql就不會包含這個欄位,即使request param故意帶入user_id也不會塞進去。

這兩個屬性是用來設定是否允許批量注入的意思,也就是當我直接下:
$this->model->create(request()->all());
把所有request params直接insert進db,哪些欄位是被允許的,哪些是不允許。

或者直接把request params拿來更新資料:
$id = request()->input('id');
$data = request()->input('data');
$db_data = $this->model->find($id);
if($db_data != null){
$db_data ->fill($data);
$db_data ->save();
}
有被允許的param才能透過fill()更新db資料!

後記:
當想要讓所有欄位都允許批量注入時,可以這樣設定:
protected $guarded = [];
沒有黑名單,也就是全部欄位都是白名單。
這時候下->create(request()->all()); 就可以直接把request參數全insert進table。

用request all params來更新某一筆資料:

request json如下:
{
"customer_id": "6",
"data": {
"name": "ss",
"nickname": ""
}
}
code:
$customer_id = request()->input('customer_id');
$customer = $this->customer->find($customer_id);
$customer->fill(request()->input('data'));
$customer->save();
有給的欄位就會更新,沒給的欄位就不會更改。
跟上述提到的白黑名單也有關係,白名單的欄位才能直接從request param來更新。
為什麼會看到廣告
20會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
Laravel Send Mail
閱讀時間約 1 分鐘
Laravel Validator
閱讀時間約 1 分鐘
Laravel Storage
閱讀時間約 1 分鐘
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
[Laravel] 設定並上傳檔案到AWS S3Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。
Thumbnail
avatar
Hankz
2024-03-20
[Laravel] 使用Supervisor執行Laravel的Queue Worker在使用laravel中的Queue job的時候 如果希望job中斷還可以重新啟動這個時候就會需要用到Supervisor了 本篇文章為您帶來如何使用Supervisor執行Laravel的queue:work的教學
Thumbnail
avatar
Hankz
2024-03-13
Laravel初學者指南:Model如何被Controller所使用本篇深入探討了Model的基本定義、其Controller的關係,以及如何在Controller中使用Model進行CRUD操作。強調了Model的關聯方法,如hasMany,並透過範例程式碼展示了其實際應用。為初學者提供了一個清晰的Laravel入門路徑,同時也為有經驗的開發者提供了實用的參考。
Thumbnail
avatar
Rewrite
2023-08-20
Laravel初學者指南:深入探索Model的使用與應用Laravel的Model是資料和邏輯的核心連接,簡化資料庫操作。本指南著重於Model的基本屬性、方法和Eloquent ORM的使用。我們詳細探討了hasMany、hasOne和belongsTo這些關聯,它們基於外鍵確定資料間的關係。透過本文,您將深入了解如何有效地在Laravel中使用Mod
Thumbnail
avatar
Rewrite
2023-08-18
Laravel初學者指南:探索Controller與Model的關係本文開始前,對於已經熟悉Laravel框架的您來說,這篇文章可能涵蓋了一些您已知的基本概念。然而,對於那些剛踏入Laravel世界的初學者,這篇指南將為您提供一個基礎概念,幫助您更好地理解這個強大的框架。 簡介 Laravel是當今最受歡迎的PHP框架之一,它使用MVC(Model-View
avatar
Rewrite
2023-08-17
TParts Model Y 四車門槽軟矽膠儲物盒使用環境友善的矽膠材料製成 超高邊,完整包覆 完美尺寸,不影響緊急手把 超簡單清潔,100% 防水
Thumbnail
avatar
EVWave
2023-02-22
Model 3 行李箱隔音棉Model 3 行李箱隔音棉 此商品有新款為分體式隔音棉,更好安裝
Thumbnail
avatar
EVWave
2023-02-17
搭建一個 Laravel 開發環境(Linux, Nginx, MySQL and PHP)Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
avatar
yuanchin
2022-06-19