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

Laravel Eloquent调用load()后如何获取返回指定列数据

Laravel Eloquent 调用load()后仅返回指定列实现方案

针对你需要在Provinsi模型调用load()后仅返回id、kd_prop_id字段的需求,提供两种可直接落地的实现方案:

方案1:控制器端临时设置模型输出白名单

Eloquent模型提供了setVisible()方法,可直接指定当前实例允许序列化输出的字段白名单,修改控制器代码即可生效:

public function show(Provinsi $provinsi)
{
    abort_if(Gate::denies('provinsi_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');

    return new ProvinsiResource($provinsi->load([])->setVisible(['id', 'kd_prop_id']));
}

该方式无需修改其他文件,仅对当前控制器逻辑中的模型实例生效,不在白名单内的字段会在序列化时自动过滤。

方案2:API资源层固定返回结构(推荐)

Laravel的JsonResource设计初衷就是统一管控接口输出结构,在资源层定义返回字段是更规范的实现,不会影响模型在其他业务场景的字段使用。
找到app/Http/Resources/ProvinsiResource.php文件,修改toArray方法:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'kd_prop_id' => $this->kd_prop_id,
    ];
}

控制器代码无需额外调整,保持原有写法即可,接口会自动按照资源类定义的结构返回数据。

补充说明

如果后续你需要在load()中加载关联关系并指定关联返回字段,必须在字段列表中包含关联依赖的外键,否则关联数据会加载失败。示例写法:

// 加载kabupaten关联时,必须带上外键provinsi_id
$provinsi->load(['kabupaten:id,provinsi_id,nama_kab']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:03:19