Laravel 9 枚举条件 if

Laravel 9 enum conditional if

我创建了一个枚举,并添加了一个条件:

<?php

declare(strict_types=1);

namespace App\Enums;

use App\Models\collections;

enum ServiceColections : string {


    case POS = (isset(collections::first()))? 'POS' : '';

}

如果数据库中有项目(table 集合),则条件如下,因此创建案例 POS,但如果它们不存在,则不创建。

目前我遇到这个错误:Enum case value must be compile-time evaluatable

为什么它不起作用?

正如错误本身所说,这在编译时不起作用。

我们能做的是,添加枚举方法:

use App\Models\collections;

enum ServiceColections 
{
    case POS;

    public function collection(): string // name the function of your choice
    {
        return match($this) 
        {
            self::POS => collections::first() ? 'POS' : '',
        };
    }
}

方法可以这样使用:

\App\Enums\ServiceColections::POS->collection();