【问题标题】:How to save obj in db in laravel(mysql) [closed]如何在laravel(mysql)中的db中保存obj [关闭]
【发布时间】:2017-12-02 02:12:30
【问题描述】:

我正在连接 2 个变量

  1. $link1 --- 对象
  2. $mynewvalue ---- 数组
$obj_merged = (object) array_merge((array) $link1, $mynewvalue);
$settings->value = $obj_merged;

$settings->save();

错误:

Object of class stdClass could not be converted to string

我对此完全感到困惑,任何人都可以建议帮助。谢谢。

【问题讨论】:

  • 不清楚您在寻找什么。您是否尝试在设置表中保留有关 $obj_merged 的所有信息?该值是否在表中序列化?你是怎么得到$link 的?

标签: php mysql arrays laravel stdclass


【解决方案1】:

假设您的示例,您可以使用 serialize http://php.net/manual/fr/function.serialize.php 序列化您的对象

或使用 json_encode 将其编码为 JSON http://php.net/manual/fr/function.json-encode.php

如果您尝试在这些值中搜索,保存序列化对象或 JSON 编码对象确实是最好的做法。

最后,您要做的不是串联,而是合并(这不是一回事)。有关串联/合并差异的更多信息,请参阅What is the difference between concatenate, appending and merge on SAS?

【讨论】:

    【解决方案2】:

    查看attribute casting 的模型。将 protected $casts 数组添加到您的 Setting 模型中:

    class Setting extends Model
    {
        protected $casts = ['value' => 'object'];
    
        // Class properties and methods
    }
    

    这将自动为您处理此属性的序列化和反序列化。

    这还可以让您在设置值之前跳过将数组转换为对象的步骤,并在后台转换为对象,以便您执行以下操作:

    $settings->value = array_merge((array) $link1, $mynewvalue);
    
    $settings->save();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2019-09-10
      • 2016-02-12
      • 2018-07-23
      • 2023-03-20
      • 2017-08-14
      • 1970-01-01
      相关资源
      最近更新 更多