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

Laravel8查询结果转JSON时如何为所有值自动添加引号

Laravel 8 输出JSON时强制所有值为字符串、null转空字符串实现方法

实现思路

你需要在集合转JSON之前,对所有字段值做类型强制转换,将数字转为字符串、null转为空字符串,有两种常用实现方案:

方案1:集合批量处理(仅对当前查询生效,无全局影响)

直接在你的控制器代码中添加遍历转换逻辑即可:

// 原有查询逻辑不变
$tmpMenu = Menu::leftJoin('bookings', 'menus.date_menu', '=', 'bookings.date_reservation')->get();

// 新增处理逻辑:遍历所有字段强制转字符串
$processedMenu = $tmpMenu->map(function ($item) {
    $attributes = $item->toArray();
    foreach ($attributes as $key => $value) {
        $attributes[$key] = (string) $value;
    }
    return $attributes;
});

// 转JSON
$finalTab2 = $processedMenu->toJson();

同时注意模板渲染的写法错误:你原来的代码中{{!! $finalTab2 !!}}外层多余的单引号会导致JSON语法错误,修改为:

events: {!! $finalTab2 !!},

方案2:模型属性转换(全局生效,所有该模型序列化场景都生效)

如果该规则需要对所有Menu、Booking模型的序列化结果生效,可以在模型中定义转换规则:

  1. 定义字段类型转换,将数值字段强制转为字符串
  2. 定义访问器,将null值自动转为空字符串
// app/Models/Menu.php 示例
class Menu extends Model
{
    // 字段类型转换
    protected $casts = [
        'id' => 'string',
        // 其他需要转字符串的数值字段依次添加
    ];

    // 为需要处理null的字段添加访问器
    public function getDescriptionAttribute($value)
    {
        return (string) $value;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:18:04