【问题标题】:How to return JSON string value of property in array as JSON array in laravel如何在laravel中将数组中属性的JSON字符串值作为JSON数组返回
【发布时间】:2019-11-26 18:47:32
【问题描述】:

我将 JSON 字符串存储在 MySQL 表的列中。当我尝试通过 API 将该列数据作为 php/json 数组返回时,它仍然是一个字符串。

这是我的代码,它返回一个问题数组,在每个问题对象中,我将选项数组作为 JSON 字符串化。但是,当它返回时,我不希望选项被字符串化。

    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
    }
]

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我刚刚添加了 $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');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 2019-03-04
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多