【问题标题】:Laravel/Vue - Passing data : Json Nested values as stringLaravel/Vue - 传递数据:Json 嵌套值作为字符串
【发布时间】:2019-11-17 21:31:08
【问题描述】:

我正在尝试将一个 JSON 对象从我的 Laravel 后端传递到我的 Vue 前端,但是其中一个嵌套属性正在以字符串而不是对象的形式返回。有问题的对象是user.options,如下所示。

user.options 对象格式正确,但是当我发送响应时,它被视为字符串。我可以在前端将字符串转换为 JSON,但这并不理想。

public function update(Request $request)
{
    $user = $this->user;
    $user->options = json_encode([
        'cart' => $request->only('product_id', 'code', 'product_slug', 'pic_url', 'request')
    ]);
    $user->save();

    return response()->json($user);
}

【问题讨论】:

    标签: php json laravel vue.js


    【解决方案1】:

    无需手动序列化属性的 JSON。相反,您可以使用 Eloquent 的 $casts 属性来定义您的 options 应该被视为对象:

    class User
    {
        /**
         * The attributes that should be cast to native types.
         *
         * @var array
         */
        protected $casts = [
            'options' => 'object',
        ];
    }
    

    然后您可以将数组和对象分配给该属性。 Eloquent 会将其作为 JSON 存储在后台。当您检索该属性时,Eloquent 会再次将其转换回一个对象:

    public function update(Request $request) {
        $user = $this->user;
        $user->options = [
            'cart' =>  $request->only('product_id', 'code', 'product_slug', 'pic_url', 'request')
        ];
        $user->save();
    
        return response()->json($user);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 2015-08-07
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多