Size: a a a

2019 December 09

OP

Oleksandr Petrenko in Laravel UA
Павел
просто джобу нельзя пустить?
там все сложно...)))
источник

OP

Oleksandr Petrenko in Laravel UA
нах#евертили что надо)
источник
2019 December 10

MR

Maxim Rebitskiy in Laravel UA
Oleksandr Petrenko
там пока обошлось малой кровью так как я выше писал), но нашел еще один прикол - в контроллере надо запускать артизан-комманду. Artisan::call('aimeos:jobs product/import/csv smartshop'); в контроллере почему-то не работает, но в тинкере делает все как надо
Не работает, ибо аргументы для команды передаются массивом отдельно, а не в строке
источник

OP

Oleksandr Petrenko in Laravel UA
Maxim Rebitskiy
Не работает, ибо аргументы для команды передаются массивом отдельно, а не в строке
Доброго дня, так пробував теж, хоча в доках написано, що можна й в одну стрічку.

Варіант Artisan::call('aimeos:jobs', ['jobs' => 'product/import/csv', 'site' => 'smartshop']) теж результату не дає.

Якщо туди підставити якусь рідну команду, наприклад make:controller MyController, то відпрацьовує як треба.
источник
2019 December 12

П

Павел in Laravel UA
Всем привет. Столкнулся с проблемой при создании поиска по сайту. Ищу по 3 моделям. Грубо Блог посты, FAQ и документы. Хочу выдавать по дате . Плюс модели все разные по столбцам. Соответственно делаю промежуточную коллекцию, добавляя туда результаты поиска и формирую что-тот типа заголовка и краткого описанию сущности которая найдена. Приделал пагинатор, который правда пока не передает в ссылках поисковую query строку. Но главная проблема в другом. Получается каждый раз сервер будет искать в 3 таблицах при пагинации . Потребление памяти будет жестким и я не могу ограничить конкретный запрос к модели, потому что у меня общий пагинатор. Может кто-то подскажет варианты решения?
источник

MA

Maksim Aleshchenko in Laravel UA
можешь попробовать сделать на основе mysql view и по ней искать и пагинатор будет работать
источник

П

Павел in Laravel UA
еще не сталкивался. это переложить работу на мускл и забрать ее у laravel scout ?
источник

П

Павел in Laravel UA
scout умеет неточный поиск делать
источник

MA

Maksim Aleshchenko in Laravel UA
ты же не уточнял как у тебя поиск организован :)
источник

s

sm0ck1 in Laravel UA
я вот так решил похожую задачу:

   $total = count($items);
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);


   $items = $items->forPage($page, $per_page)->flatten();

   return new LengthAwarePaginator($items, $total, $per_page, $page);
источник

П

Павел in Laravel UA
это решение не теряет строку поиска ?  метода get у меня
источник

П

Павел in Laravel UA
читаю про mysql views. There's also a caveat to using views though. Depending on the kind of query, MySQL will need to construct an "in memory" table representing the view, at runtime. This operation is called table materialization and happens when using certain keywords like GROUP BY, or aggregated functions.

The takeaway is that views might actually hurt query performance, depending on the kind of query you're executing.
источник

s

sm0ck1 in Laravel UA
сделал поиск по таблицам смержил всё в один оьект, прошелся мапом, сформировал общий вид и добавил тот кусок кода что кинул
источник

s

sm0ck1 in Laravel UA
это стандартное решение в ларе, страницы работают без проблем
источник

s

sm0ck1 in Laravel UA
поведение такое же как ->paginate()
источник

П

Павел in Laravel UA
sm0ck1
сделал поиск по таблицам смержил всё в один оьект, прошелся мапом, сформировал общий вид и добавил тот кусок кода что кинул
Вот этот момент и пугает меня. Представим гипотетически, что по поиску получаются миллионы строк в каждой таблице. Например ищем по 2 буквам. Мы должны закинуть все это в память и смержить. Если бы бы поиск по одной модели - у нас есть LIMIT для мускла
источник

П

Павел in Laravel UA
А так на каждом запросе пагинации идет выгрузка в память всех строк
источник

П

Павел in Laravel UA
никкого limit
источник

П

Павел in Laravel UA
думаю что прямого решения и нет. это же чисто физическая проблема
источник

s

sm0ck1 in Laravel UA
ну тут ка бы я вижу 2 путя. Первый это промежуточная таблица с теми полями по которым идет поиск, в подробности розписывать не буду. Второй вариант это при поиске сразу лимитировать, например по per_page
источник