【问题标题】:How to pull json data from data mysql as object using laravel5?如何使用 laravel5 从数据 mysql 中提取 json 数据作为对象?
【发布时间】:2017-07-16 15:21:21
【问题描述】:

我有一个表,其中包含我必须作为对象获取的列中的 JSON 但是当我使用 laravel 模型提取数据时,它显然以 JSON 或字符串的形式返回,我必须在每个地方解码,我使用这个模型的地方(这不是干巴巴的概念)但问题是如果我拉一个记录和一个地方然后它只是代码的一次执行,还可以,但是如果我必须提取数据和多个地方的集合,那么我必须每次都运行相同的解码,laravel 中有什么方法可以为我做,而不是使用自制循环

这是表格

+-----------------------------------------------------------------------------+
|                                   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...
                )

        )

    ...
)

如果有任何简单的方法可以更有效地遵循干 然后与我分享。

提前致谢。

【问题讨论】:

  • 我调用了模型,然后循环遍历它,然后使用 json_decode() 用对象覆盖元素

标签: php mysql json laravel-5


【解决方案1】:

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

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

正如Official Documentation 中提到的那样。

【讨论】:

  • 谢谢 :) 这对我有很大帮助并节省了时间
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 2013-02-27
  • 2019-04-30
  • 2017-08-20
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多