Ответ 1
Здесь вы можете объединить массивы двух результатов запроса, а затем использовать Response с json-выходом, как показано ниже.
$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);
У меня есть контроллер, где я хочу объединить данные из нескольких таблиц с параллельными структурами. В конце концов, я хочу закончить, это один объект, который я могу вернуть из контроллера, чтобы я мог его проанализировать в 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;
}
Мне сказали qaru.site/info/36580/..., что это работает в PHP 5.3+. Однако это возвращает следующую ошибку в Laravel:
UnexpectedValueException: The Response content must be a string or object implementing
__toString(), "object" given.
Как реализовать этот метод в Laravel? Оба $mc
и sm
возвращают допустимые объекты в Laravel.
Здесь вы можете объединить массивы двух результатов запроса, а затем использовать Response с json-выходом, как показано ниже.
$array = array_merge($mc->toArray(), $sm->toArray());
return Response::json($array);
В настоящее время вы можете использовать
$new_collection = $collection->merge($other_collection)
.
Это работает в Laravel 4 и, похоже, обрабатывает как массивы, так и коллекции.
Мы можем использовать коллекцию, как показано ниже
$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
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().
Вы можете просто использовать функцию array_merge(firstObject,secondObject)
.
$obj = array_merge($mc, $sm);
return $obj;