You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Models;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
|
|
|
|
|
class DictItem extends Model
|
|
|
|
|
{
|
|
|
|
|
use HasFactory;
|
|
|
|
|
|
|
|
|
|
protected $fillable = [
|
|
|
|
|
'dict_type',
|
|
|
|
|
'dict_name',
|
|
|
|
|
'remark',
|
|
|
|
|
'dict_sort',
|
|
|
|
|
'item_label',
|
|
|
|
|
'item_value',
|
|
|
|
|
'item_remark',
|
|
|
|
|
'sort',
|
|
|
|
|
'is_active',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
protected $casts = [
|
|
|
|
|
'is_active' => 'boolean',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @return array<int, array{value: string, label: string}>
|
|
|
|
|
*/
|
|
|
|
|
public static function activeOptions(string $dictType): array
|
|
|
|
|
{
|
|
|
|
|
return static::query()
|
|
|
|
|
->where('dict_type', $dictType)
|
|
|
|
|
->where('is_active', true)
|
|
|
|
|
->orderBy('sort')
|
|
|
|
|
->orderBy('id')
|
|
|
|
|
->get(['item_value', 'item_label'])
|
|
|
|
|
->map(fn ($r) => [
|
|
|
|
|
'value' => (string) $r->item_value,
|
|
|
|
|
'label' => (string) $r->item_label,
|
|
|
|
|
])
|
|
|
|
|
->values()
|
|
|
|
|
->all();
|
|
|
|
|
}
|
|
|
|
|
}
|