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

2022-08-30 15:48:03

我有一个控制器,我想将来自多个表的数据与并行结构相结合。最终我想得到的是一个可以从控制器返回的对象,这样我就可以在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;
}

StackOverflow上的另一篇文章告诉我,这适用于PHP 5.3 +。但是,这将在 Laravel 中返回以下错误:

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

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


答案 1

如今,您可以使用

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

这在 Laravel 4 中有效,似乎可以同时处理数组和集合。


答案 2

您可以在此处执行的操作是合并两个查询结果的数组,然后使用具有 json 输出的响应,如下所示。

$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);

推荐