這邊的 Entity/Model 僅當成Eloquent class ,不包含資料庫邏輯,僅保留以下部分
範例
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 則可以只處理資料庫操作,做好分工。
參考連結: