Php 如何在控制器中合并Laravel对象

Php 如何在控制器中合并Laravel对象,php,laravel,Php,Laravel,我有一个控制器,我想把来自多个表的数据与并行结构结合起来。我希望最终得到的是一个可以从控制器返回的对象,以便在主干中解析它 我想这样做: public function index() { $mc = MainContact::where('verified', '=', '1')->get(); $sm = SendMessage::where('verified', '=', '1')->get(); $obj = (object) array_merg

我有一个控制器,我想把来自多个表的数据与并行结构结合起来。我希望最终得到的是一个可以从控制器返回的对象,以便在主干中解析它

我想这样做:

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;
}
我被告知这在PHP5.3+中有效。但是,这会在Laravel中返回以下错误:

UnexpectedValueException: The Response content must be a string or object implementing
 __toString(), "object" given.

如何在Laravel中实现此方法?
$mc
sm
都返回Laravel中的有效对象。

这里可以做的是合并两个查询结果的数组,然后使用json输出的响应,如下所示

$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);
现在你可以用

$new\u collection=$collection->merge($other\u collection)

这在中起作用,似乎可以处理数组和集合

Route::get('test', function(){
    $rank = Rank::get();
    $policy = Policy::get();
    $obj = (object)array_merge_recursive((array)$rank , (array)$policy);
    var_dump($obj);
});

这对我有用。使用array\u merge\u recursive()代替array\u merge()

$admins = User::where('type', '=', 'admin')->get();

$authors = User::where('type', '=', 'author')->get();

$admin_author_collection = $admins->merge($authors);
此外,请参考以下链接的各种收集方法


您可以简单地使用
array\u merge(firstObject,secondObject)
函数

$obj = array_merge($mc, $sm);
return $obj;

我现在用的是Laravel 4 alpha。我打算在今天、周一或任何时候发布测试版时升级到beta版。我尝试用一个空白的
\uuuToString()创建一个单独的类
方法,但不知道将其存储在Laravel 4中的何处。该类似乎位于
vendor
folder中从
vendors
文件夹到Eloquent的路径是什么?在我的场景中,它在集合合并后会占用一些行。您的集合是否使用字符串作为键?merge使用PHP的array_merge,它覆盖字符串键,但不覆盖整数键。如果这是一个问题,您总是可以将Laravel Collection子类化以覆盖实现。在我的例子中,只有
$other_Collection
保留,而
$Collection
消失。为什么?@AliGajani,是的。如果给定项中的字符串键与原始集合中的字符串键匹配,则给定项的值将覆盖原始集合中的值。但是,如果给定项的键是数字的,则这些值将附加到集合的末尾。看看这里:这就是我想要的。谢谢