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

vbkedwbf  于 2023-05-05  发布在  PHP
关注(0)|答案(6)|浏览(115)

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

another post on StackOverflow告诉我,这在PHP 5.3+中有效。但是,这会在Laravel中返回以下错误:

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

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

jrcvhitl

jrcvhitl1#

现在你可以用
$new_collection = $collection->merge($other_collection) .
这在Laravel 4中起作用,似乎同时处理数组和集合。

gfttwv5a

gfttwv5a2#

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

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

vwoqyblh3#

我们可以使用收集如下

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

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

$admin_author_collection = $admins->merge($authors);

另外,请参考以下链接的各种收集方法
http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html

nimxete2

nimxete24#

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

这对我很有效。使用array_merge_recursive()代替array_merge。

vpfxa7rd

vpfxa7rd5#

我使用concat和为我工作。就像这样:

$role1 = User::where('role', '=', 'role1')->get();
$role2 = User::where('role', '=', 'role2')->get();
$allRoles = $role1->concat($role2);
z6psavjg

z6psavjg6#

你可以使用array_merge(firstObject,secondObject)函数。

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

相关问题