Laravel jsonb 列在 javascript 对象中编码为字符串

Posted

技术标签:

【中文标题】Laravel jsonb 列在 javascript 对象中编码为字符串【英文标题】:Laravel jsonb columns encoded as string in javascript object 【发布时间】:2021-01-20 09:04:50 【问题描述】:

我的 Laravel API 以这种方式发送 user 数据:

class UserController extends Controller

    public function user(Request $request)
    
        return $request->user()->only([
            'email',
            'foo',
            'bar'
        ]);
    

当我使用 Nuxt 身份验证模块获取它时,jsonbfoobar 在我的 state.auth.user 对象中被编码为引号中的字符串。

我可以在 Laravel 端修复它吗?如果是,如何?

努克斯特pages/index.js:

async login() 
  await this.$auth
    .loginWith('laravelPassport', 
      data: 
        username: this.email,
        password: '1qaz@WSX'
      
    )
    .catch((e) => 
      console.log(e)
    )

【问题讨论】:

【参考方案1】:

我终于通过在我的User 模型中将这些列转换为array 来修复它:

/**
 * The attributes that should be cast to native types.
 *
 * @var array
 */
protected $casts = [
    'foo' => 'array',
    'bar' => 'array'
];

【讨论】:

以上是关于Laravel jsonb 列在 javascript 对象中编码为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Postgres jsonb '? Laravel 中具有索引支持的运算符?

如何使用 Laravel Eloquent 更新 PostgresQL 中 jsonb 列的多个“键”

添加或删除列在handsontable中不起作用

拉拉维尔 5.6。如何测试 JSON/JSONb 列

数据库json列在laravel刀片中返回转义字符串

使用 Laravel Blade 从 Postgres 显示 JSON 数据