iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
1

本系列文的環境狀態,可點擊此連結後花園環境參考

[ 種花囉! ]章節的會員系統 CRUD 將會是用 Api 放 POSTMAN 測試,所以不會用美美的前端教學,在此先給大家打個預防針。

Eloquent Model 什麼可以填進來?什麼填不進來呢?

table:不行~不要隨便進來~不要把我弄得亂七八糟啦! >x<
謎之音:咳~嗯~沒事~就請大家守規矩點,該做的保護要做好。

在此先填入下方程式碼後,會再稍微跟看倌解釋使用的原因跟關係。

在 Eloquent Model 檔,填入程式碼

路徑:app/Flower.php

<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Flower extends Authenticatable
{
    use Notifiable;                       

    protected $fillable = [          // 使用批量分配( Mass Assignment )的填充白名單
        'name', 'email', 'password', 'api_token'
    ];

    protected $hidden = [           // 隱藏 model 的陣列或 JSON 的屬性 
        'password',
    ];
}

Mass-Assignment 批量分配

它可以確實獲得預期的表單字串,避免用戶提交非必要欄位資料。
若未使用,容易造成一般使用者可透過僞造欄位字串,就改變了身份或某些特殊資料。

例:如果系統有設置['is_dmin' => 1]這個欄位字串,可將用戶身份設置爲 管理員 ,可是不提供給一般使用者填寫,但因爲沒有限制的話,一般使用者就可以自己僞造一個這樣的字串,竄改自己的身份。

如果有使用了 $fillable (白名單)或 $guarded (黑名單),此時 Eloquent Model 會先使用 fill() 的方法對資料進行過濾,填入在(白名單)內的字串,或去掉在(黑名單)內的字串,確保符合所想要的預期字串。

今天就跟看倌們介紹到此,咱們明天再續囉~

更多資訊,請參考下列連結:
❁ Laravel 官方- Eloquent: Getting Started
❁ Laravel 官方- Notifications
❁ 使用大量資料的方式新增(Mass Assignment)時無法新增
❁ Why do we use fillable in laravel?
❁ What is the use of fillable in Laravel?
❁ Laravel 官方- Eloquent: Serialization
❁ Laravel Mass-Assignment (批量分配) 的真正含義
❁ Laravel Mass Assignment, Guarded or Fillable?


上一篇
✾後花園D25✾-種花囉! Part 5( 會員系統 CRUD 之 Controller 解說篇 )
下一篇
✾後花園D27✾-種花囉! Part 7( 會員系統 CRUD 之 登入設定 )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2019-11-10 02:19:27

https://ithelp.ithome.com.tw/upload/images/20191110/201195462LBJN9UbGH.jpg

不行~不要隨便進來~/images/emoticon/emoticon25.gif

我要留言

立即登入留言