iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
1
自我挑戰組

Laravel 實戰經驗分享系列 第 12

Laravel 實戰經驗分享 - Day12 初探 Laravel - Model 模型以及 Eloquent ORM (下)

  • 分享至 

  • xImage
  •  

今天,依然是帶著想要富奸的心態來面對大家嗚嗚嗚,不過一個可以短短結束的 Model 卻分成上、中、下集...

卑鄙源之助(搓手)

Model 的儲存、更新功能

新增資料

當我們的資料需要新增到資料庫的時候,一樣可以使用 ORM 語法完成。
我們將鏡頭切回 Controller,把以下的 Code 跑過一次。

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Create a new user instance.
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        // Validate the request...
        $user = new User;
        $user->name = $request->name;
        $user->save();
    }
}

store 這個 function 是讓 Route 送過來的 Request 能夠新增一個 User Model 的實體,$user->name 就是將 $request->name 的值存入並由 $user->save() 存入 Model 內,Model 再將這些資料存入資料庫內。

你也可以用 array 的方式存入多個欄位的資料。

$user = new User([
    'name' => $request->name,
    'email' => $request->email,
    'password' => bcrypt($request->password)  
])->save();

更新資料

更新資料有兩種方式,一種是先在 query 的階段挑選特定某筆資料,同樣用 save() 進行更新。

$user = App\Models\User::find(1);
$user->name = 'Alex';
$user->save();

另外則是使用 update() 進行更新,update 也可在針對某些屬性的資料進行大量更新時透過 array 的方式使用。

$user = App\Models\User::
        where('job','bug Engineer')
        ->where('country','Chinese Taipei')
        ->update([
            'country' => 'Taiwan'
        ]);

關於 update 以及 save 底層實作的不同可以參考此篇 Laravel Eloquent 事件中的 Updated 和 Saved 原來不一樣

驗證 Model 是否被儲存

上面的文章提到類似 isDirtyisClean 的概念,我以官方文件舉例。

$user = User::create([
    'first_name' => 'Taylor',
    'last_name' => 'Otwell',
    'title' => 'Developer',
]);

$user->title = 'Painter';

$user->isDirty(); // true
$user->isDirty('title'); // true
$user->isDirty('first_name'); // false

$user->isClean(); // false
$user->isClean('title'); // false
$user->isClean('first_name'); // true

$user->save();

$user->isDirty(); // false
$user->isClean(); // true

這兩個方法會驗證你是否在載入 Model 有將 Model 實體進行更改,因此在某些商業邏輯下,你可能需要驗證這個資料是否被更改,也是非常實用的方法。


OK,這幾天真的是好懶好想停刊 XDDDDD,看我今天壓線發文就知道,撐下去撐下去啊(對自己吶喊)
明天見囉!!!


上一篇
Laravel 實戰經驗分享 - Day11 初探 Laravel - Model 模型以及 Eloquent ORM (中)
下一篇
Laravel 實戰經驗分享 - Day13 初探 Laravel - View
系列文
Laravel 實戰經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言