VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻

Как лучше сгруппировать и обработать результат выборки?

Есть таблица компаний, у компании не уникальное название.
Есть такие роуты
companies/
companies/prefix-{name_slug}
companies/{company:slug}
В первом роуте список всех компаний, используется метод paginate() и links()
Во втором роуте список тех компаний, названия которых совпадают (название транслитилируется в поле name_slug)
Третий роут - страница конкретной компании, slug уникальный.

Как в первом роуте сделать так, что-бы компании с уникальным на данный момент названием ссылались на третий роут, а компании с повторяющимся названием сгруппировались по названию и ссылались на второй?

Дело в том, что копаний будет миллионы, если я просто достану все компании и сгруппирую методами php, создав там необходимые ссылки, таблица при выборке может вылететь из памяти и все это будет очень долго. Не знаю как подойти.

UPD:
Можно создать некое поле link, логику переложить на его генерацию и выборка будет стандартной, но на этапе создания компании нужно будет перегенерировать это после у всех компаний, что как-то жирно, есть ли еще варианты?
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kandrash
Кратко о себе
Так у вас же slug равен NULL там где нет уникального? Вот и делайте ссылку
$company->slug ? '/companies/slug' : 'companies/prefix-name_slug';

А сам slug по определению должен быть уникальным. Добавьте, например, ID в него. Не нужно ничего перегенерировать. Будет slug типа company_name-ID
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы