2017-06-28 58 views
1

我串联2个变量如何OBJ保存分贝laravel(MySQL的)

  1. $链接1 ---对象
  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 

我完全困惑这个任何人都可以请建议help.Thanks。

+0

不太清楚你”重新寻找。你是否试图在设置表中保留关于'$ obj_merged'的所有信息?这个值是在表中序列化的吗?你如何获得'$ link'开始? – cwallenpoole

回答

0

假设你的榜样,您可以使用serializehttp://php.net/manual/fr/function.serialize.php

序列化对象或使用json_encode http://php.net/manual/fr/function.json-encode.php

保存序列化对象或对其进行编码的JSON JSON编码的对象是真的,如果你做的最好的事情正在尝试搜索这些值。

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

1

查看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();