:::

9-4 用 fillable 批量賦值寫入

  1. 另一種更簡單的方式是改用 fillable 批量賦值(Mass Assignment)寫法
    public function store(Request $request)
    {
        Exam::create([
            'title'   => $request->title,
            'user_id' => $request->user_id,
            'enable'  => $request->enable,
        ]);
        return redirect()->route('exam.index');
    }
  2. 接著到 /專案/app/Exam.php 設定哪些欄位可以使用 fillable

    class Exam extends Model
    {
        protected $fillable   = [
            'title', 'user_id', 'enable',
        ];
    }
    
  3. 由於enableboolean類型,但在資料庫卻被存成數字,所以,需要做一下型別轉換,因此,我們利用$casts來進行型別轉換。關於型別轉換,可參考:https://laravel-china.org/docs/laravel/5.6/eloquent-mutators/1406#attribute-casting
    protected $casts = [
        'enable' => 'boolean',
    ];
  4. 若是有欄位因為資安或其他問題,不想讓它使用批量賦值,那請用 guarded 屬性,例如:
    protected $guarded = [
        'id', 'password',
    ];
  5. 批量賦值詳情可參考:https://laravel-china.org/docs/laravel/5.6/eloquent/1403#c7d398

二、更簡易的寫法

  1. 也可以用 $request->all() 取得使用者填寫的所有資料陣列
    public function store(Request $request)
    {
        Exam::create($request->all());
        return redirect()->route('exam.index');
    }
  2. 完工!

  3. 關於 Request 的詳情可以查看:https://laravel-china.org/docs/laravel/5.6/requests/

 

到GitHub觀看此單元程式異動


:::

書籍目錄

展開 | 闔起

快速登入


http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D1169%26tbsn%3D37

計數器

今天: 1492149214921492
昨天: 2665266526652665
總計: 8074929807492980749298074929807492980749298074929