iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
1
自我挑戰組

Laravel 實戰經驗分享系列 第 10

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

挑戰來臨的第十天,一切正常、OK,先來講講目前寫鐵人賽的心得吧,其實寫到最近,已經開始習慣下班後打開自己筆電繼續寫文章了,原本覺得自己應該會很忙,然後早早放棄鐵人賽,但後來發現寫文章並不會占用太多的時間,大部分都是整理自己之前的經驗,那代表之前的下班時間可能都是被我耍廢耍掉了XDDDD

Model 的概念

由於 Laravel 擁有完整的 MVC 架構,因此不同類型的 class 都有不一樣的功能以及分工。以 Model 來說,主要就是處理你要建的系統資料庫,每一個模型都會對應背後的資料庫,方便你進行操作。
而在 Laravel 內,就是使用 Eloquent ORM 來實現這個功能,用程式碼進行資料庫查詢,避免掉了許多使用純 SQL 語法會遭遇的問題,如 SQL injection,且即使在不同的資料庫中,也可以用相同的語法進行資料庫的操作,除非之後系統遇上效能的瓶頸或是遇上較複雜的查詢,才需要思考其他作法,否則以 Laravel 提供的 ORM 已經能夠完成大部分的需求了。

Model 的基本操作

Model 的新增一樣以 Artisan 的指令操作,注意在 Model 的命名上記得第一個字要大寫。
在 Laravel 8 開始,你透過 Artisan 指令產生的 Model 會被放在 app/Models 內,這是比較貼心的做法,Laravel 6 與 7 都沒有,但我自己仍會新增一個專門放 Model 的資料夾,不然等專案一大的話,整個 app/ 根目錄會充斥你這個系統的 Model。
新增 Model。

php artisan make:model User

若是你要在產生 Model 的時候順便建資料表,可以這樣下,這樣他就會對應你的 Model 幫你做好 Migration 檔案。

php artisan make:model User --migration
# or
php artisan make:model User -m

接下來可以進入到 app/Models/User.php 這個 Model 檔案裡面,Laravel 的 Model 所繼承的常數都可以在這邊直接修改。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name'];
}

這邊是常用的幾個變數
$fillable 若是你要在 Controller 內操作的欄位,就放到這個變數內。
$hidden 有時候一些比較需要隱藏的欄位例如密碼,就會放在這個變數內。
$timestamps Laravel 的 Migration 預設幫你建好 created_atupdated_at 兩個欄位,在你進行資料的新增以及修改時也會自動寫進這兩個欄位,如果你不需要的話,就可以將這個變數改為 false

至於其他的變數我目前的專案經驗都還沒用過,並沒有非常理解,怕會講錯,大家可以到官方文件去查看它的功能,今天的內容就先到這邊,明天來講一下如何在 Controller 或是其他地方操作 Model。

目前的感想

當然,在鐵人賽的期間,我仍有其他的事情必須去完成,像今年我參與了 MOPCON 的籌辦,除此之外自己也有找朋友錄 Podcast 來玩玩,因此有時候下班的時間是要準備 MOPCON 兩天大會的活動規劃以及行政事務,每周也會固定做 Podcast 的內容準備、錄音或後製,所以時間管理就很重要囉。
目前我自己下班後的時間規劃是先打開 iThome 寫文章,不管文章通不通順,先快速把要說的重點寫出來,再慢慢梳理、抓錯字或是不通順的地方,完成鐵人賽的當天發文大約花一小時左右。之後再處理 MOPCON 的事情,而且通常這個時間也是其他的志工伙伴在線上的時間,要問問題或是討論就可以馬上處理,這個時候也會把一些較瑣碎的行政庶務處理完畢,大概兩小時左右(中間會伴隨逛逛 FB 或是看個 YT 小短片XD)。
概念上就是參照下圖的時間管理矩陣,基本上鐵人賽就是重要且緊急優先處理,MOPCON 活動就是重要但目前不會有那麼強的急迫性,可歸類在重要但不緊急,但是幾天內一定要完成,否則他就會慢慢移到第一象限。
不重要但緊急的事情是最難歸類的,常會跟重要又緊急的事情搞混,因此一定要好好想想有些事情是不是非得處理,有時候不做也許也不會有甚麼影響,不如把精力都留在重要的事情上,不重要且不緊急的事情就比較像是「逃避現實」的活動,可以做,但不要把最寶貴的時間都花在上面。
時間管理的矩陣

最後就是把時間留給自己,像 Podcast 或是其它自己有興趣的事情就是這個時候處理了,因為並沒有時間上的急迫性,處理起來不會有壓力,又是自己喜歡的事情,做起來就會比較開心:D。
明天見囉!


上一篇
Laravel 實戰經驗分享 - Day9 初探 Laravel - Controller 控制器
下一篇
Laravel 實戰經驗分享 - Day11 初探 Laravel - Model 模型以及 Eloquent ORM (中)
系列文
Laravel 實戰經驗分享30

尚未有邦友留言

立即登入留言