Laravel将数据保存为数据库中的JSON而不转义URL

时间:2017-12-14 16:13:07

标签: php laravel laravel-5

store函数中,我想在不转义URL的情况下将JSON数据保存在数据库中,例如:

$arr = [
    'images'=>['original'=>'/uploads/contents/' . basename($filename)],
    'thumbnail'=>'/uploads/contents/' . basename($filename)
];

$data = Contents::create([
    'title' => $request->title,
    'description' => $request->description,
    'featured_images' => $arr,
    'visit' => 0,
]);

要将此结果作为$arr存储在我拥有的数据库中:

{
    "images":
          {"original":"\/uploads\/contents\/636459965493789558.jpg"},
    "thumbnail":"\/uploads\/contents\/636459965493789558.jpg"
}

在那里,URL被转义。如何在不转义URL的情况下存储它?

我的模特选项:

protected $casts=[
    'featured_images'=>'array'
];

2 个答案:

答案 0 :(得分:1)

您可以手动编码json以防止斜线

json_encode($value, JSON_UNESCAPED_SLASHES);

答案 1 :(得分:0)

我认为你应该这样离开。 无论何时你想使用它,只需json_decode这样。

<?php
$a = json_decode('{
    "images":
          {"original":"\/uploads\/contents\/636459965493789558.jpg"},
    "thumbnail":"\/uploads\/contents\/636459965493789558.jpg"
}', true);
echo $a["images"]["original"];
?>

结果:

/uploads/contents/636459965493789558.jpg