Eloquent 設定

設定可以大量新增的欄位

Eloquent 為了避免特定欄位(像是 id, created_at …)被使用者故意傳入大量(Mass)資料去進行修改,所以 Eloquent 會自動保護欄位不被大量異動(Mass Assignment),像是:

// 新增
App\User::Create([
  'first_name'=> 'KeJyun',
  'last_name' => 'Hong',
  'email'     => 'kejyun@gmail.com',
]);


// 更新
$user = App\User::find('1');

$user->update([
  'email'     => 'hello@gmail.com',
]);

如果我們需要異動這些欄位,需要在 Model 裡面設定 $fillable 的欄位,這樣就可以使用大量資料的方式,去新增或異動資料表欄位資料。

class User extends Model {

    protected $fillable = ['first_name', 'last_name', 'email'];

}

設定需要被保護的欄位

我們也可以使用 $guarded 指定某些欄位需要被保護,能被大量新增或異動

class User extends Model {

    protected $guarded = ['id', 'password'];

}

我們也可以設定所有欄位都不能被大量新增或異動

class User extends Model {

    protected $guarded = ['*'];

}

設定欄位為時間資料欄位

我們可以很簡單的使用 Carbon 去做時間的資料處理,預設的 created_atupdated_at 是使用 Carbon 當作儲存的資料格式

$article = \App\Article::find(1);

// created_at = '2014-03-18 23:59:59'

// 取得 created_at 年份
// 2014
dd($article->created_at->year);

// 取得 created_at 月份
// 03
dd($article->created_at->month);

// 取得 created_at 6 天後的時間
// 2014-03-24 23:59:59
dd($article->created_at->addDays(6));

// 取得 created_at 格式化為 Y-m 的時間
// 2014-03
dd($article->created_at->format('Y-m'));

// 取得 created_at 格式化為人可閱讀的時間
// 1 year ago
dd($article->created_at->diffForHumans());

若我們自己新增了時間的欄位像是 published_at,則 Model 沒有自動將此欄位的資料設為 Carbon 的資料格式

我們可以在 Model 中設定 $dates 欄位中的資料,可以指定欄位資料格式為 Carbon 的資料格式

class Article extends Model {

    protected $dates = ['published_at'];
}

設定資料庫的連線

我們也可以使用 $connection 指定模型需要用哪個資料庫連線去做查詢

class User extends Model {

    protected $connection = 'custom_connection_name';

}

設定主鍵不要自動新增

使用 Eloquent 去建立模型(Model)時,預設主鍵會使用自動新增(Auto-increment)的方式去新增,若要自行定義主鍵時,則要設定 $incrementingfalse,將自動新增的功能關閉~

class User extends Model {

  public $incrementing = false;

}

設定主鍵欄位名稱

使用 Eloquent 去建立模型(Model)時,預設會將主鍵欄位名稱設為 id,若有需要異動主鍵欄位名稱的話,則要設定 $primaryKey 變數,設為自行定義的欄位名稱

class User extends Model {

  protected $primaryKey = 'my_primary_column_name';

}

參考資料

KeJyun 最新新書推薦
- Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站
- Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。

雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。

本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。

Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站

購書連結

Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

購書連結

comments powered by Disqus