我有一个控制器,我想要将来自多个表的数据与并行结构相结合.我最终想要得到的是一个可以从控制器返回的对象,所以我可以在Backbone中解析它.
我想做这样的事情:
public function index()
{
$mc = MainContact::where('verified', '=', '1')->get();
$sm = SendMessage::where('verified', '=', '1')->get();
$obj = (object) array_merge((array) $mc, (array) $sm);
return $obj;
}
Run Code Online (Sandbox Code Playgroud)
StackOverflow上的另一篇文章告诉我,这可以在PHP 5.3+中运行.但是,这会在Laravel中返回以下错误:
UnexpectedValueException: The Response content must be a string or object implementing
__toString(), "object" given.
Run Code Online (Sandbox Code Playgroud)
如何在Laravel中实现此方法?双方$mc并sm在Laravel返回有效对象.
我希望能够做到以下几点:
$obj = new stdClass;
$obj->status = "success";
$obj2 = new stdClass;
$obj2->message = "OK";
Run Code Online (Sandbox Code Playgroud)
如何扩展$ obj以使其包含$ obj2的属性,例如:
$obj->status //"success"
$obj->message // "OK"
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用数组,将所有属性添加到数组然后将其转换回对象,但有更优雅的方式,如下所示:
extend($ obj,$ obj2); //将$ obj2中的所有属性添加到$ obj
谢谢!
可能重复:
合并两个PHP对象的最佳方法是什么?
我有一个对象$ foo,它已经定义了一些方法和属性,另一个对象是$ bar,它只是一组属性.我想将$ bar的全部内容合并到$ foo中,这样$ bar的所有属性都成为$ foo的属性.
所以,如果事先我有,$ bar-> foobar,之后我应该可以使用$ foo-> foobar.
目前,我正在做以下事情:
foreach($bar as $key => $value) {
$foo->$key = $value;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用数组,我只会执行以下操作之一:
$foo += $bar;
$foo = array_merge($foo, $bar);
Run Code Online (Sandbox Code Playgroud)
是否有类似的方式与对象这样做或我已经正确的方式吗?
请注意,我不知道$ bar自身成为$ foo的财产,即不是$ foo-> bar-> foobar
我有2个物体.
这是使用print_rPHP方法打印出来的对象的输出.
对象#1;
stdClass Object ( [id] => 1 [portal_id] => 1 [name=> NEVZAT )
Run Code Online (Sandbox Code Playgroud)
对象#2;
stdClass Object ( [surname] => YILMAZ)
Run Code Online (Sandbox Code Playgroud)
我想将这两个对象相互连接起来,所以在进程结束时我需要一个包含2个对象的所有变量的Object;
stdClass Object ( [id] => 1 [portal_id] => 1 [name=> NEVZAT [surname] => YILMAZ )
Run Code Online (Sandbox Code Playgroud)