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
И передавать соответственно только коллекцию
Andrey
Aliaksandr
Сделай dd после первого запроса
Aliaksandr
Шо там?
Alexey
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']) )
То будет коллекция. Но метода также нет)
Pathologic
Alexey
оно само работает?)
Pathologic
нет, Веббер по мотивам сделал для ларавеля
Alexey
Aliaksandr
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
объект пагинатора является ли коллекцией вообще
Aliaksandr
Alexey
Макс все разрулил. )
Aliaksandr
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
ну вот