2017-02-25 76 views
1

我有包含JSON在我得为对象 但是当我使用laravel模型然后将数据它显然返回JSON或字符串,我必须每一个地方,在那里我用这个模型解码列的表(这是不干燥的概念),但事情是,如果我拉一个记录,一个地方,那么它的代码,并确定只有一个执行,但如果我要拉的数据和多个地方的集合,然后我要运行相同的解码什么每次都是在有任何laravel方式,可以为我做的,而不是使用自制的循环如何使用laravel5将数据mysql中的json数据作为对象?

下面是表

+-----------------------------------------------------------------------------+ 
|         table          | 
+-----------------------------------------------------------------------------+ 
|id | title | text               | 
+-----------------------------------------------------------------------------+ 
| 1 | A1 | {"subject":"Subject1","word":"Lorem ipsum dolor sit amet, ..."} | 
| 2 | A2 | {"subject":"Subject2","word":"Lorem ipsum dolor sit amet, ..."} | 
| 3 | A3 | {"subject":"Subject3","word":"Lorem ipsum dolor sit amet, ..."} | 
| 4 | A4 | {"subject":"Subject4","word":"Lorem ipsum dolor sit amet, ..."} | 
| 5 | A5 | {"subject":"Subject5","word":"Lorem ipsum dolor sit amet, ..."} | 
| 6 | A6 | {"subject":"Subject6","word":"Lorem ipsum dolor sit amet, ..."} | 
| 7 | A7 | {"subject":"Subject7","word":"Lorem ipsum dolor sit amet, ..."} | 
| 8 | A8 | {"subject":"Subject8","word":"Lorem ipsum dolor sit amet, ..."} | 
| 9 | A9 | {"subject":"Subject9","word":"Lorem ipsum dolor sit amet, ..."} | 
| 10| A10 | {"subject":"Subject10","word":"Lorem ipsum dolor sit amet..."} | 
+-----------------------------------------------------------------------------+ 

我已经尝试了本

$tables = TableModel::all(); 
foreach ($tables as &$table) { 
    $table->text = json_decode($table->text); 
} 


结果就是我想要

Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
      [title] => A1 
      [text] => stdClass Object 
       (
        [subject] => Subject1 
        [word] => Lorem ipsum dolor sit amet... 
       ) 

     ) 

    [1] => stdClass Object 
     (
      [id] => 2 
      [title] => A2 
      [text] => stdClass Object 
       (
        [subject] => Subject2 
        [word] => Lorem ipsum dolor sit amet... 
       ) 

     ) 

    ... 
) 

如果有什么简单的方法即是更有效,并按照干 然后跟我分享。

在此先感谢。

+0

我叫过它然后循环模式,并使用'json_decode对象覆盖那么,元件()' – User97798

回答

1

您可以使用Attribute Casting概念每次从数据库中读取记录的时间来获得结果所需的格式。要从JSON转换为Array,您可以使用以下代码。

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

Official Documentation中所述。

+0

谢谢:)这帮助了我很多东西,化险为夷 – User97798

相关问题