Laravel指東:使用模型建立 uuid 主鍵資料的兩種方式

右手發表於2021-07-02

使用場景:使用模型建立一條資料,且 id 使用 uuid 自動接管;
必備知識:沒學過 PHP,沒啥必備的;

這裡不說建表、建立模型了,直奔主題!

模型(Tabs)

use Ramsey\Uuid\Uuid;
use Illuminate\Support\Str;
class Tabs extends Model
{
    /**
     * 關閉主鍵的自動增長(id)
     * @var string
     */
    public $incrementing = false;
    /**
     * 配置允許操作的欄位(自動接管id,這裡無需配置)
     * @var array
     */
    protected $fillable = ['title'];
    /**
     * 模型的 "booted" 方法(使用模型create時自動接管id)
     * @return void
     */
    protected static function booted()
    {
        static::creating(function ($tabs) {
            if (! $tabs->getKey()) {
                $tabs->{$tabs->getKeyName()} = (string) Uuid::uuid4()->getHex(); //方式1:uuid外掛庫
                //$tabs->{$tabs->getKeyName()} = (string) Str::uuid();; //方式2:Str自帶方法
            }
        });
    }
}

控制器(TabsController)

class TabsController extends Controller
{
     /**
     * Store a newly created resource in storage.
     * 演示程式碼
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = $request->only([ 'title']);
        $res = Tabs::create($data);
        return response($res);
    }
}

響應(方式1)

{
    "title": "測試標籤1",
    "id": "q8fdf2d0c38d8sfdbjfc2s743dfba2af"
}

安裝外掛

ramsey/uuid - github

composer require ramsey/uuid

就這樣,打完收工!如有補充,請在下方評論區討論。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章