Elegant Eloquent
首先是資料表設計
實務上來說
至少要做到1NF
舉個例子來說
今天班上有三個同學
三個同學都考了三個科目
國 | 英 | 數 | |
---|---|---|---|
甲 | 80 | 90 | 60 |
乙 | 70 | 60 | 90 |
丙 | 90 | 30 | 60 |
看起來或許很簡單
Title Text
在Laravel裡面
主要有兩種model
DB 或 Model(Eloquent)
class DB
- 輕量化的class
- 同時支援raw sql以及eloquent style
- 沒有model event
<?php
// eloquent mode
DB::table('users')->where('id', 1)->update('name', 'foo');
// sql mode
DB::update("UPDATE users SET name='foo' WHERE id=1");
適合更多的彈性
但是很難維護
class Model
- ActiveRecord style (from Ruby On Rails)
- 語意比較明確
- Virtual Attribute... and so on
<?php
// 取得ID為1的第一筆資料
App\User::where('id', 1)->first();
// 取得ID為1的第一筆資料,不存在的話為fail
App\User::where('id', 1)->firstOrFail();
新增刪除也是
<?php
// 新增user,名字為foo
App\User::create(['name' => 'foo']);
// 刪除ID為1的user
App\User::where('id', 1)->delete();
Laravel Eloquent
提供了方便的語法
<?php
...
...
public function store()
{
$json = request()->json();
App\User::create($json);
return response(204);
}
What's wrong?
所有json的資料都會被儲存
<?php
class User extends Model
{
protected $fillable = ['name'];
}
$fillable 提供直接賦值的filter
當然,eloquent支援不止是這樣
支援很多特殊的attribute
- primaryKey
- incrementing
- timestamps
- casts
- dates
- ...
或者你也可以到這裡看
來一個比較特別的
Virtual Attribute
Elegant Eloquent
By michael34435
Elegant Eloquent
- 1,019