Laravel 透過純粹(無支援)枚舉進行搜索
P粉773659687
P粉773659687 2024-02-03 20:19:05
0
1
452

我正在嘗試透過純枚舉欄位在資料庫中執行搜尋:

enum Enum1 {
    case Case1;
}

Model::query()->where('enum1', Enum1::Case1)->first()

並且它不起作用,導致錯誤 Error Object of class Enum1 Could not be conversion to string.

當我透過支援的枚舉進行搜尋時,它有效:

enum Enum2: int {
    case Case1 = 1;
}

Model::query()->where('enum2', Enum2::Case1)->first()

Model->casts 中,為 Enum1Enum2 提供值。

我知道,我可以透過 Enum1::Case1->name 進行搜索,但這不是我要找的。如果可能的話,我想安排合適的演員。 處理這個問題最簡單/正確的方法是什麼?

P粉773659687
P粉773659687

全部回覆(1)
P粉946437474

我認為你的問題是 MySQL 沒有對 Enum 欄位的本機支援。

where 子句中的 Eloquent 也希望第二個參數為字串或其他「常見」資料類型。

也許在某個時候 Laravel eloquent 會支援 Enums,但我認為目前情況並非如此。

我認為使用以下內容沒有什麼問題:

enum Enum2: int {
    case Case1 = 1;
}

這篇文章這裡實際上討論瞭如何存取DB with Enums,所以請閱讀。

列舉的目的畢竟是讓程式碼更容易閱讀,使用「關注點分離」原則,讓程式碼更具可讀性。在 PHP8 中出現之前我們就使用了常數和其他技巧

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板