Я пытаюсь заставить Laravel Pagination работать с результатами, которые я получаю из своей базы данных, используя необработанный запрос:
select sub.*, count(l.PRODID) as likecount
from (
select p.*, count(c.PRODID) as commentcount
from products p
left join comments c on c.PRODID = p.ID
group by p.ID
) sub
left join likes l on l.PRODID = sub.ID
group by sub.ID
Но пока результатом является простой массив, функция paginate() работать не будет.
Я нашел метод HydraRaw в документах, но как бы я ни пытался, он выдает мне ошибку.
Спасибо!
$model->hydrateRaw($query, [])
? - person Can Vural   schedule 03.10.2016$model = \App\Product; $model->hydrateRaw($query, [])
с указанным выше запросом - получу: Неопределенная константа 'App\Product' - person Edmond Tamas   schedule 03.10.2016hydrate()
иhydrateRaw()
являются статическими методами. Вы должны называть их так,\App\Product::hydrate()
/\App\Product::hydrateRaw()
- person Doom5   schedule 03.10.2016$model = \App\Product;
это недействительный PHP. Вы должны создать новый экземпляр сnew
- person Can Vural   schedule 03.10.2016\App\Product::hydrateRaw("select sub.*, count(l.PRODID) as likecount from ( select......etc ", [])->paginate(15);
, но, похоже, paginate() это не нравится, она выдает: BadMethodCallException в строке 74 Macroable.php: метод paginate не существует.< /б> - person Edmond Tamas   schedule 03.10.2016hydrate()
иhydrateRaw()
возвращают экземплярIlluminate\Database\Eloquent\Collection
, у которого нет методаpaginate()
. Вы можете создать свой собственный объект пагинации. - person Doom5   schedule 04.10.2016