You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Filament v3中如何同时提取firstname和lastname作为选项值

解决Filament v3 SelectFilter显示参与者全名的问题

直接修改options里的字段提取逻辑,将单字段的firstname替换为拼接后的全名即可:

SelectFilter::make('participant_id')
    ->attribute('participant_id')
    ->label(__('messages.participant_full_name')) // 建议同步修改标签为全名
    ->options(
        Participant::query()
            ->pluck(DB::raw("CONCAT(firstname, ' ', lastname)"), 'id')
            ->toArray()
    ),

两种实现方式说明:

  • 数据库层面拼接(推荐):用DB::raw直接在查询时拼接字段,性能更优,适合数据量较大的场景
  • 集合层面处理:如果需要处理空值(比如lastname可能为空),可以用集合的mapWithKeys方法做二次处理:
Participant::all()
    ->mapWithKeys(function ($participant) {
        return [$participant->id => trim($participant->firstname . ' ' . $participant->lastname)];
    })
    ->toArray()

注意事项:

  1. 移除不必要的array_unique:参与者的id是唯一主键,即使全名重复,对应的id不同也属于独立选项,无需去重;若确实需要去重,建议在查询阶段添加->distinct()
  2. 同步更新标签翻译:将原来的participant_model_firstname替换为对应全名的翻译键,保证界面显示逻辑统一

内容的提问来源于stack exchange,提问作者stevan06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:54:51