Laravel-Suche über reine (nicht unterstützte) Aufzählung
P粉773659687
P粉773659687 2024-02-03 20:19:05
0
1
368

Ich versuche eine Suche in einer Datenbank über ein reines Enum-Feld durchzuführen:

enum Enum1 {
    case Case1;
}

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

und es funktioniert nicht, was den Fehler verursacht Error Object of class Enum1 Could not be conversion to string.

Wenn ich nach unterstützten Aufzählungen suche, funktioniert es:

enum Enum2: int {
    case Case1 = 1;
}

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

Bietet Mehrwert bei Model->casts 中,为 Enum1Enum2.

Ich weiß, ich kann nach Enum1::Case1->name suchen, aber das ist nicht das, wonach ich suche. Wenn möglich, möchte ich die richtigen Akteure einsetzen. Was ist der einfachste/richtige Weg, dieses Problem zu lösen?

P粉773659687
P粉773659687

Antworte allen(1)
P粉946437474

我认为你的问题是 MySQL 没有对 Enum 字段的本机支持。

where 子句中的 Eloquent 还希望第二个参数为字符串或其他“常见”数据类型。

也许在某个时候 Laravel eloquent 会支持 Enums,但我认为目前情况并非如此。

我认为使用以下内容没有什么问题:

enum Enum2: int {
    case Case1 = 1;
}

这篇文章这里实际上讨论了如何访问DB with Enums,所以请阅读。

枚举的目的毕竟是让代码更容易阅读,使用“关注点分离”原则,让代码更具可读性。在 PHP8 中出现之前我们就使用了常量和其他技巧

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!