簡體   English   中英

如何在laravel中將數組中屬性的JSON字符串值作為JSON數組返回

[英]How to return JSON string value of property in array as JSON array in laravel

我將JSON字符串存儲在MySQL表的列中。 當我嘗試通過API將列數據作為php / json數組返回時,它仍然是字符串。

這是我的代碼,它返回一個問題數組,並且在每個問題對象中,我都將options array作為JSON stringify。 但是,當它返回時,我不希望將選項字符串化。

    public function getQuestions($id, Request $request)
    {
        // return $id;

        $questions = Question::where('quiz_id', $id)->orderByRaw("RAND()")->get();
        $questions->makeHidden(['ans']);
        // $questions->toJson(['options']);

        // $questions['options'] = json_encode(questions['options']);
        return $questions;
    }

這樣返回。

[
    {
        "id": 100000008,
        "quiz_id": 10000,
        "title": "কোন বানানটি সঠিক?",
        "options": "[\"কলসি\",\"কলসই\",\"কলশি\",\"কলশী\"]",
        "answer": 1
    },
    {
        "id": 100000009,
        "quiz_id": 10000,
        "title": "কোন বানানটি সঠিক?",
        "options": "[\"ঠোট\",\"ঠোঁট\",\"থট\",\"কোনটি নয়\"]",
        "answer": 2
    }
]

但是我想要這樣:

[
    {
        "id": 100000008,
        "quiz_id": 10000,
        "title": "কোন বানানটি সঠিক?",
        "options": ["কলসি","কলসই","কলশি","কলশী"],
        "answer": 1
    },
    {
        "id": 100000009,
        "quiz_id": 10000,
        "title": "কোন বানানটি সঠিক?",
        "options": ["ঠোট","ঠোঁট","থট","কোনটি নয়"],
        "answer": 2
    }
]

我剛剛添加了$ casts將字符串轉換為數組

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Question extends Model
{
    protected $table = 'question';

    protected $fillable = [
        'quiz_id',
        'title',
        'opt1',
        'opt2',
        'opt3',
        'opt4',
        'ans',
        'options',
        'answer'
    ];

    protected $casts = [
        'options' => 'array',
    ];

    public function quiz()
    {
        return $this->belongsTo('App\Quize', 'quiz_id' , 'id');
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM