iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
0
自我挑戰組

來用Laravel做點什麼吧系列 第 11

D11 Model, Eloquent, ORM(1)

請、請容許我⋯⋯繼續跟資料庫奮鬥一下⋯⋯(掙扎

各種資料看著看著覺得自己都不認識PHP了,真糟糕⋯⋯好,之前認識的View跟Controller在Laravel中怎麼使用,然後好像還少了誰?喔對,Model。

一開始說過Model是跟資料做互動的架構,但實際上Model在MVC架構中幾乎包含了所有logic,總之就是定義問題。所以我們在Laravel的目錄架構下,你會看到叫View的資料夾、叫Controller的資料夾,但你不會看到一個叫做Model的資料夾。

分享Day1也分享過的大大的另一篇文章:框架不應該有「models」資料夾 | 轉個彎日誌

之後再拎一篇出來認識Model設計模式。

先繼續看個Elpquent。Eloquent是Laravel的ORM(Object Relational Mapping)實作,規範Project怎麼和資料庫互動,用於簡化程式。我們可以透過Eloquent Model來查詢資料表或新增紀錄。

php artisan make:model Cat

新生成的Model檔會直接放置在app目錄底下,原始內容長這樣:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cat extends Model
{
    //
}

順帶一提,如果你想換個地方生成文件,可以這樣做:

php artisan make:model ./ps/com/Cat

如此一來檔案就會在app/ps/com資料夾裡而不是app目錄,其他make方法也是同理。

在Eloquent規範中,會默認資料表名稱、主鍵、時間戳記等等資訊,當然你也可以自定義。

// 資料表名稱:
// 默認為小寫、底線、複數名稱,比如叫'Cat'的Model就會默認使用'cats'的資料表
protected $table = 'i_love_cats
// 主鍵:
// 默認欄位為'id',且為遞增數列
protected $primaryKey = 'name'
public $incrementing = false // 改為非遞增
protected $keyType = string // 主鍵的資料型態,默認是int
// 時間戳記:
// 默認啟用功能,會有個created_at 欄位和 updated_at 欄位
public $timestamps = false // 停用
// 自訂放時間戳記的欄位名稱
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'last_update';

上一篇
D10 聽過Migration嗎?
下一篇
D12 Model, Eloquent, ORM(2)
系列文
來用Laravel做點什麼吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言