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

seh*_*mel 23 php laravel

我有一个控制器,我想要将来自多个表的数据与并行结构相结合.我最终想要得到的是一个可以从控制器返回的对象,所以我可以在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中实现此方法?双方$mcsm在Laravel返回有效对象.

trm*_*m42 42

现在你可以使用

$new_collection = $collection->merge($other_collection).

这适用于Laravel 4,似乎可以处理数组和集合.


Raf*_*lks 26

你可以在这里做的是合并两个查询结果的数组,然后使用带有json输出的Response,如下所示.

$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);
Run Code Online (Sandbox Code Playgroud)


Ram*_*kar 7

我们可以使用如下集合

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

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

$admin_author_collection = $admins->merge($authors);
Run Code Online (Sandbox Code Playgroud)

另外,请将各种收集方法参考以下链接

http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html