Laravel Pagination merge

Я использую Laravel 4 для своего проекта.
Я разбил результаты выборки из 4 таблиц и хотел передать их для просмотра в одной переменной.

$vehicles = DB::table('vehicle')->orderBy('postTime','DESC')->paginate(8);
$estates = DB::table('estate')->orderBy('postTime','DESC')->paginate(8);
$tradings = DB::table('trading')->orderBy('postTime','DESC')->paginate(8);
$jobs = DB::table('job')->orderBy('postTime','DESC')->paginate(8);

но я не мог слить их используя array_merge() . Я тоже пробовал ->to_array() после paginate это не сработало.

может кто-нибудь помочь мне здесь?

РЕДАКТИРОВАТЬ

как предложил @Turgut Sarıçam, я использовал getItems() для моих результатов и вот мой код:

public static function index(){
$minVehicle = DB::table('vehicle')->min('price');
$maxVehicle = DB::table('vehicle')->max('price');
$minEstate = DB::table('estate')->min('price');
$maxEstate = DB::table('estate')->max('price');
$minTrading = DB::table('trading')->min('price');
$maxTrading = DB::table('trading')->max('price');
if($minVehicle == 'توافقی')
$minVehicle = 0;
if($maxVehicle == 'توافقی')
$maxVehicle = 0;
if($minEstate == 'توافقی')
$minEstate = 0;
if($maxEstate == 'توافقی')
$maxEstate = 0;
if($minTrading == 'توافقی')
$minTrading = 0;
if($maxTrading == 'توافقی')
$maxTrading = 0;
$vehicles = DB::table('vehicle')->orderBy('postTime','DESC')->paginate(8);
$estates = DB::table('estate')->orderBy('postTime','DESC')->paginate(8);
$tradings = DB::table('trading')->orderBy('postTime','DESC')->paginate(8);
$jobs = DB::table('job')->orderBy('postTime','DESC')->paginate(8);
$allResults = array_merge($vehicles,$jobs);
//echo "<meta charset='UTF8'><pre>";
//return die(print_r($allResults));
return View::make('search')->with(
array(
'minVehicle' => $minVehicle,
'maxVehicle' => $maxVehicle,
'minEstate' => $minEstate,
'maxEstate' => $maxEstate,
'minTrading' => $minTrading,
'maxTrading' => $maxTrading,
'ads' => $allResults
)
);
}

Дамп $ allResults (где я прокомментировал) дал некоторые результаты.
Я не могу показать точный результат, но вот пример этого:

Array
(
[0] => stdClass Object
(
[id] => 243
[tableName] => vehicle
)

[1] => stdClass Object
(
[id] => 239
[tableName] => vehicle
)

[2] => stdClass Object
(
[id] => 235
[tableName] => vehicle
)

[3] => stdClass Object
(
[id] => 231
[tableName] => vehicle
)

[4] => stdClass Object
(
[id] => 227
[tableName] => vehicle
)

[5] => stdClass Object
(
[id] => 223
[tableName] => vehicle
)

[6] => stdClass Object
(
[id] => 219
[tableName] => vehicle
)

[7] => stdClass Object
(
[id] => 215
[tableName] => vehicle
)

[8] => stdClass Object
(
[id] => 4
[tableName] => job
)

[9] => stdClass Object
(
[id] => 3
[tableName] => job
)

)

хотя результат кажется справедливым, никакого представления не было возвращено. просто пустая белая страница

1

Решение

Вы должны получить предметы в первую очередь. Попробуйте вот так:

$allResults = array_merge($vehicles->items(), $estates->items(), $tradings->items(), $jobs->items());

Изменить: я думаю, вы можете получить предметы с GetItems () функция в Laravel 4. Выше для Laravel 5, мой плохой.

0

Другие решения

Вы имеете дело с коллекциями, которые возвращаются из запроса. Не думайте, что слияние массивов — правильный путь. Попробуйте использовать слияние коллекций.

Слияние коллекций также поддерживается в laravel 4.
Попробуйте использовать это

$merged_collection = $vehicles->merge($estates)->merge($tradings)->merge($jobs);
0

По вопросам рекламы [email protected]