Laravel Eloquent使用JSON列检索行

时间:2016-05-16 19:59:13

标签: php json laravel eloquent

我的表格中有以下数据

表:

id    |name   | option_data

1     |Joe    |{"gender":"Male","cnic":"1234567","dob":"2016-03-14"}     
2     |Doe    |{"gender":"Male","cnic":"9999","dob":"2016-03-14"}     

如何以正确的json_encode格式获取数据。

例如,如果我写

echo json_encode($app->auth->users);

我的Option_data输出

option_data":"{\"gender\":\"Male\",\"cnic\":\"61101-6859110-3\",\"dob\":\"2016-03-14\"}"

我的数据库列类型为Text。如果我使用stripslashes删除所有\,则数据不是有效的JSON,因为它包含在"双qoutes中。

问题

如何使用所有其他coulmns以正确的json_encode格式获取数据。

2 个答案:

答案 0 :(得分:1)

尝试使用模型中的访问者,数据模型

public function getOptionDataAttribute($value)
{
    return json_decode($value);
}

并在您的控制器中返回:

return Model::all(); //What you need to retrieve 

输出必须是:

{
    id: 1
    name: name,
    option_data: {"gender":"Male","cnic":"1234567","dob":"2016-03-14"}
}

答案 1 :(得分:0)

您只需在模型中使用$ casts变量,它将自动转换为json并反向转换为数组。

protected $casts = [
     "option_data" => "array"
];