場景描述
擼了個包,解決困擾我很久的一個問題,當給定了 $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
。