【新包】根據 appends 配置的關聯欄位對映關係,自動維護需要的 appends - Laravel Eloquent Append Automation

terranc發表於2019-08-01

場景描述

擼了個包,解決困擾我很久的一個問題,當給定了 $appends 之後,在某些限定了查詢欄位的查詢時,會因沒查詢 accessor中涉及的欄位而導致錯誤,而每次在使用的時候再去動態append又很煩,變化時維護起來很心累。所以有了這個 package,使用以後效果如下:

Model:
use Lookfeel\AppendAutomate\Database\Eloquent\Model;

class User extend Modal {
    protected $appends = [
        'fullname',
        'gender' => 'gender_text',  // gender 是一個 int 欄位,0:女,1:男
        'status' => 'status_text', // status 是一個 int 欄位,0:禁用,1:啟用
    ];
    public function getGenderTextAttribute()
    {
        return ['女', '男'][$this->gender];
    }
    public function getStatusTextAttribute()
    {
        return ['啟用', '禁用'][$this->status];
    }
}

只需在配置 appends 時給定欄位對映 key

Controller
User::select(['id', 'firstname', 'lastname', 'gender'])->firstOrFail();

/***
{
    "id": 1,
    "firstname": "Terran",
    "lastname": "Chao",
    "fullname": "Terran Chao",
    "gender": 1,
    "gender_text": "男"
} 
*/

如何使用

$ composer require lookfeel/laravel-eloquent-append-automate

方法一:

使用 Lookfeel\AppendAutomate\Database\Eloquent\Model 替換 Illuminate\Database\Eloquent\Model

只需將 Model 繼承 Lookfeel\AppendAutomate\Database\Eloquent\Model 即可. Lookfeel\AppendAutomate\Database\Eloquent\Model 繼承自 Eloquent

方法二:

使用 Lookfeel\AppendAutomate\AppendAutomateTrait

如果由於某些原因不能繼承 Lookfeel\AppendAutomation\Database\Model,那麼您可以在已有 Model 中 use Lookfeel\AppendAutomation\AppendAutomateTrait

相關文章