iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
Software Development

30天快速上手Laravel系列 第 12

Day12-[Laravel 資料夾目錄與內容] Entity(Model)

  • 分享至 

  • xImage
  •  

介紹

這邊的 Entity/Model 僅當成Eloquent class ,不包含資料庫邏輯,僅保留以下部分

  • Property : 如$table,$fillable ...。
  • Mutator: 包括 mutator 與 accessor。
  • Method : relation 類的 method,如使用 hasMany() 與 belongsTo()。

範例

namespace App\Entities\Product;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Product extends Model
{
    use SoftDeletes; //使用soft delete要加的

    protected $table = 'products';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
    ];

    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = ['deleted_at']; //使用soft delete要加的
}

屬性說明

  • fillable: 指定了可以被批量賦值的欄位,設定白名單
  • guarded: 與 fillable相反的屬性,設定黑名單
  • dates: 以date的型態存入,created_at, updated_at預設會轉換成 Carbon的實例
  • dateFormat: 自訂時間格式,一般預設會以Y-m-d H:i:s 格式化,如果想要自訂可以調整這裡,範例: (調整成timestamp存入)
protected $dateFormat = 'U';

另外也可以自己定義mutator,範例:

    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = strtolower($value);
    }

順便複習一下之前有提到softDelete 在migration的設定方式

其他參考:


結論: 這邊的介紹之所以把Entities & Repositories 拆開來,是因為這樣Entities 可以專心定義DB屬性,Repository 則可以只處理資料庫操作,做好分工。

參考連結:


上一篇
Day11-[Laravel 資料夾目錄與內容] Route (HTTP 路由) part 2
下一篇
Day13-[Laravel 資料夾目錄與內容] Repository
系列文
30天快速上手Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言