【问题标题】:How to save the json array data in database in laravel?如何在laravel的数据库中保存json数组数据?
【发布时间】:2021-12-29 08:59:41
【问题描述】:

有谁知道如何在 PHPMyAdmin 中以这种格式 ["123"] 存储数据?

现在我存储到数据库中的数据只是 123 的值。我想像 ["123"] 这样存储数据。有谁知道怎么做?

这是我的代码:

Company::create([
   'companyID' =>  $people->people_id,
]);

【问题讨论】:

  • 列可以使用json类型。但在我看来,您不应该在一列中保存多个 id,因为这会使关系查询变得更加困难。
  • @GertB。谢谢你的回复,json类型怎么输入?
  • 我同意 Gert 的观点,如果你想拥有多个引用,明智的做法是让 orm 处理它,而不是手动将数据编码为 json。
  • @JervenClark 感谢您的回复。我是 laravel 的新手。让 orm 处理就意味着创建不同表之间的关系吧?
  • @dipgirl 确实就是这个意思。阅读有关 Eloquent 关系的 Laravel 文档,这将是最好的选择。

标签: laravel eloquent


【解决方案1】:

要以您想要的方式存储数据,您需要将表列的数据类型更改为 json。它可以在您的迁移文件中完成,例如:

$table->json('column_name');

迁移表后,您必须为模型文件中的特定列添加转换。可以这样做:

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

完成此操作后,您可以将数据以 json 格式存储在数据库中。

您可以在此处Laravel Docs 找到有关投射的更多信息。

https://laravel.com/docs/8.x/eloquent-mutators#array-and-json-casting

【讨论】:

    【解决方案2】:

    您可以将文本数据保存在 mysql 表列中。为此,您应该将列类型更改为文本并按照以下代码作为参考。

    您必须将数组更改为 json 数据并传递变量以创建方法作为值。请记住,为了存储字符串值,您必须用引号将值括起来。

    $data = json_encode([
        123, "124", 134.4, "450"
    ]);
    
    Company::create([
    
        'companyID' => $data
    
    ]);
    

    【讨论】:

    • 如果要使用 json 列,最好在 Laravel 中使用强制转换而不是手动编码。
    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2016-10-14
    相关资源
    最近更新 更多