我有一个控制器,我希望将来自多个表的数据与并行结构相结合。我最终想要得到的是一个可以从控制器返回的对象,所以我可以在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中实现此方法? $mc
和sm
都返回Laravel中的有效对象。
答案 0 :(得分:41)
答案 1 :(得分:25)
你可以在这里做的是合并两个查询结果的数组,然后使用带有json输出的Response,如下所示。
$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);
答案 2 :(得分:7)
我们可以使用如下收集
$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
答案 3 :(得分:2)
Route::get('test', function(){
$rank = Rank::get();
$policy = Policy::get();
$obj = (object)array_merge_recursive((array)$rank , (array)$policy);
var_dump($obj);
});
这对我有用。而不是array_merge使用array_merge_recursive()。
答案 4 :(得分:0)
您可以简单地使用array_merge(firstObject,secondObject)
函数。
$obj = array_merge($mc, $sm);
return $obj;