如何在 Laravel where 条件中使用 php8 枚举类型?

问题描述 投票:0回答:1

我有一个 php8 枚举类型

enum OperationTypes: string
{
    case PointsAdd = 'points-add';
}

我需要确定如何在 Laravel 数据库查询生成器中正确使用它。 例如:

Model::where('type', OperationTypes::PointsAdd)
or 
Model::where('type', OperationTypes::PointAdd->value)

Model::whereIn('type', [OperationTypes::PointAdd])
or
Model::whereIn('type', [OperationTypes::PointAdd->value])

正确的做法是什么?

enums laravel-9 php-8
1个回答
0
投票

Model::where('type', OperationTypes::PointsAdd)
OperationTypes 类型的
object
传递给 where 子句,这是行不通的。

Model::where('type', OperationTypes::PointAdd->value)
string 传递给 where 子句,这是在查询中使用枚举的正确方法。

如果 PHP 枚举支持

toString
魔术方法 自动转换自身,那就太好了,但不幸的是它们不支持。

© www.soinside.com 2019 - 2024. All rights reserved.