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

如何在Laravel Eloquent中将ID数组转换为字符串数组返回

解决Laravel Eloquent查询返回字符串ID数组的问题

嘿,我来帮你搞定这个需求!要在Eloquent查询内部把数字ID数组转换成字符串数组,其实可以直接在数据库查询阶段就完成类型转换,不用等拿到结果再用PHP处理。这里有几种实用的方法:

方法1:使用selectRaw配合CAST函数

直接在关联查询里指定字段转换,然后再pluck:

public function toArray($request) {
    return [
        'speciality' => $this->specialities()
            ->selectRaw('CAST(speciality_id AS CHAR) as speciality_id')
            ->pluck('speciality_id')
    ];
}

这种方式会让数据库把speciality_id字段转换成字符串类型后再返回,pluck出来的自然就是字符串数组了。

方法2:在pluck中直接使用DB::raw

如果想更简洁,可以直接在pluck方法里用DB::raw来做类型转换:

use Illuminate\Support\Facades\DB;

public function toArray($request) {
    return [
        'speciality' => $this->specialities()
            ->pluck(DB::raw('CAST(speciality_id AS CHAR)'))
    ];
}

记得要引入DB门面哦,这样就能直接在pluck里指定转换逻辑了。

方法3:用CONCAT函数实现转换(MySQL适用)

如果你用的是MySQL数据库,还可以用CONCAT函数把数字和空字符串拼接,自动转成字符串:

use Illuminate\Support\Facades\DB;

public function toArray($request) {
    return [
        'speciality' => $this->specialities()
            ->pluck(DB::raw('CONCAT(speciality_id, "")'))
    ];
}

这个方法和CAST的效果是一样的,看你个人习惯选择就行。

以上几种方法都是在Eloquent查询过程中完成类型转换,完全符合你“在查询内处理”的要求,返回的结果就是["1", "3", "5", "7"]这样的字符串数组啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:10