Pathologic
даже подсчет количества в доклистере сделан иначе
Aliaksandr
Хз, когда я это делал это были идентичные запросы на случай фильтрации по тв - обычный left join. А что случилось по дороге из DLSiteContent в обычный SiteContent я уже не разбирался сильно )
Pathologic
на случай фильтрации - да, а без нее эти джойны нафиг не нужны
Pathologic
и группировка такая тем более не нужна
Aliaksandr
Изначально оно так и было - тв отдельно в массив дособирались, а джойнились вроде только тв из фильтра
Aliaksandr
Group by site_content.id там по идее должно быть
Andrey
Я просто это убирал, сделал свою модельку с protected $with = ['templateValues']; Запрос стал раз в пять быстрее. Но блин вспомнил потом, что мне надо по ТВ фильтровать. Похоже, придётся обратно к withTVs идти
Andrey
Опять же, имена ТВ подтягивать надо. Сделал так, но это по сути запрос на каждый документ. Тоже не дело( public function category() { $id = $this->templateValues->where('tmplvarid',21)->first(); return Post::find($id->value); }
Aliaksandr
withTVs изначально задумывалось в комплекте с фильтрацией - чисто для джойна нужных таблиц. А для простого подтягивания тв был другой метод, надо по коду глянуть, есть ли он
Aliaksandr
Даже в ридми было $out .= '<h1>Работаем с tvList внутри массива (рекомендуемый метод)</h1>'; $result = DLSiteContent::where('parent', 0)->active()->get(); $result = DLSiteContent::tvList($result, ['price', 'brand']);
Andrey
$result = SiteContent:: where('parent', 377) ->active() ->orderBy('createdon', 'desc') ->paginate(10); $result = SiteContent::tvList($result, ['mainphoto', 'category','tags']); dd($result); И де тут теги?)
Andrey
tvs пустое
Andrey
Или убирать пагинацию, ставить ->get() и тогда будет. И как?)
Aliaksandr
Хз, есть же тут люди, которые доклистер давно выбросили и используют модели - надо у них спросить, я то доклистером пользуюсь как недоравитый :)
Pathologic
этим людям поебать на медленные запросы
Aliaksandr
Пагинатор вроде возвращает коллекцию не в result, надо глянуть структуру
Alexey
почему как?))
Pathologic
чуть что - скажут что надо валить на твилл
Aliaksandr
Ее и передавать назад в модель
Andrey
Я понимаю, что tvList возвращает массив, а надо коллекцию
Alexey
Андрюх, а что мешает сделать вызов сниппета и не делать голову?
Aliaksandr
Надо глянуть что возвращает пагинатор, там же вроде массив из коллекции и данных по страницам
Aliaksandr
И передавать соответственно только коллекцию
Aliaksandr
Сделай dd после первого запроса
Aliaksandr
Шо там?
Axenia
dvakotaby (860.07) увеличил карму webber_12 (7060.48)
Aliaksandr
Когда был dlsitecontent еще пагинатора не было, надо смотреть, как оно там возвращает
Andrey
$result = SiteContent:: where('parent', 377) ->active() ->orderBy('createdon', 'desc') ->get(); Коллекция итемов
Alexey
а кто DL адаптировал под трешку?
Andrey
Потом SiteContent::tvList($result, ['mainphoto', 'category','tags']) Уже массив
Andrey
Соответственно, paginate у него нет. Если сделать collect( SiteContent::tvList($result, ['mainphoto', 'category','tags']) ) То будет коллекция. Но метода также нет)
Alexey
оно само работает?)
Pathologic
нет, Веббер по мотивам сделал для ларавеля
Aliaksandr
И передать для поиска тв только тот кусок, в котором коллекция итемов
Andrey
Объект пагинации возвращает
Aliaksandr
И? Что в нем?
Aliaksandr
Кусок с коллекцией итемов и кусок с пагинацией
Aliaksandr
Вот и передай дальше в tvList только кусок с итемами
Andrey
Aliaksandr
Ну бля, вон же $items - они нам и нужны вместо $result
Aliaksandr
Наверно )
Andrey
Достучаться ток не могу)
Andrey
$result['items'] хуй, также со стрелкой
Andrey
Бл, наверное проще и правда Доклистер.
Aliaksandr
Мож. $result->items
Alexey
$result->items - не?
Alexey
))
Andrey
не
Alexey
ебни print_r
Aliaksandr
Вот так и узнаешь, что никто нихрена так не делает. Я хотя бы честно пишу, что хуярю доклистером и бед не знаю все эти списки :) кроме простейших без тв и пагинации - и то чисто для понта
Alexey
я вообще с 1.4.15 работаю)
Andrey
А как тут будутделать, если простейшая хуйня — вывести новости с тв "Теги", "Категория" — затык на2 дня
Pathologic
нужно вот здесь смотреть https://github.com/evolution-cms/evolution/blob/3.x/core/src/Models/SiteContent.php#L2196
Andrey
$result->items() Ебать же, ну почему оно — метод???
Pathologic
объект пагинатора является ли коллекцией вообще
Alexey
Макс все разрулил. )
Aliaksandr
$result->items() Ебать же, ну почему оно — метод???
Во, суй это дальше, посмотрим, чего вернет ))
Andrey
Писюн вернёт, туда массив надо
Aliaksandr
Так сделай ей toArray() и всунь 😁
Andrey
Но $result->items()->toArray() пошлёт нахуй, метода нет
Andrey
Пара-пара-пам.
Aliaksandr
Жопорукие писатели ларавеля 😅
Pathologic
items это массив
Pathologic
чтобы прокатило нужно сделать из него коллекцию и ее уже передать в tvList
Aliaksandr
В дампе ж написано что это коллекция
Pathologic
коллекция это items и хуяйтемс
Pathologic
а items видно что array
Andrey
ёбаныочи
Aliaksandr
Подожжи, там внутри items есть еще items на которые написано array
Aliaksandr
Вот их и брать надо
Am
Субботняя содержательная беседа. ((%
Andrey
Итого.. $result = SiteContent:: where('parent', 377) ->active() ->orderBy('createdon', 'desc') ->limit(20) ->paginate(); $result = SiteContent::tvList(collect($result->items()), ['mainphoto', 'category','tags']) ; dd($result); Работает.
Pathologic
ну вот
Aliaksandr
чтобы прокатило нужно сделать из него коллекцию и ее уже передать в tvList
Коллекция там не нужна, там нужен как раз массив, потому что в оригинале result получался из toArray()