Size: a a a

2020 March 18

N

NoMad42 in Laravel Pro
хм... очень похоже что да)) пойду осознаю...
источник

AR

Anton Rusakov in Laravel Pro
Edward
Можно ли как-то на SQL сделать такой запрос:

Есть две таблицы, таблица news и premium_news (Возможно вы спросите почему нельзя добавить поле isPremium в таблицу news - считайте просто дано такое условие).

TABLE news

id   title   body


TABLE premium_news

id   news_id created_at

Мне нужно вывести последних 15 созданных новостей.
Но, как вы догадались, нужно выводить сначала premium новости.

Грубо говоря мне нужно вывести сначала ВСЕ premium новости(отсортированные по дате создания), а после - оставшиеся обычные.

Можно ли это все сделать на стороне БД чтобы не напрягать сервер такой сортировкой?(Нужно учесть, что если новость находится в таблице премиумов - это не означает, что ее не будет в обычных news)
Я бы сделал left join на премиум и отсортировал бы по наличию I'd в премиум
источник

EG

Egor Gruzdev in Laravel Pro
Anton Rusakov
Я бы сделал left join на премиум и отсортировал бы по наличию I'd в премиум
left_join хорошо, пока записей до 100к, а потом и в случае polymorph там все быстро и со вкусом сладкого "персика", прошу прощения за каламбур
источник

AR

Anton Rusakov in Laravel Pro
Egor Gruzdev
left_join хорошо, пока записей до 100к, а потом и в случае polymorph там все быстро и со вкусом сладкого "персика", прошу прощения за каламбур
Он прекрасен и даже если 1ккк записей если про праймари ключу, а там именно он
источник

AR

Anton Rusakov in Laravel Pro
Если нормально накинуть ключи
источник

AR

Anton Rusakov in Laravel Pro
Общая фраза left_join плох, только для тех кто не умеет готовить :)
источник

EG

Egor Gruzdev in Laravel Pro
Anton Rusakov
Он прекрасен и даже если 1ккк записей если про праймари ключу, а там именно он
пока нет сортировки согасен, но как только сортировка все, нет больше приемуществ инжекс, пошла сборка временной таблицы и потом сортировка
источник

AR

Anton Rusakov in Laravel Pro
Значит нужно такое ограничение, которое бы делало временную таблицу маленькой
источник

AR

Anton Rusakov in Laravel Pro
В данном случае, тут похоже что-то типа главной страницы новостей - ее я бы вообще целиком в кэше держал за исключением счётчиков (кол-во просмотров, комментов, рейтинг что там ещё) и на запрос вообще бы было посрать :)
источник

AR

Anton Rusakov in Laravel Pro
И перегенерировал бы её раз в какое-то время
источник

AR

Anton Rusakov in Laravel Pro
А счётчики в отдельной таблице отдельным запросом вытаскивал бы (там явный ин по праймари ключу)
источник

EG

Egor Gruzdev in Laravel Pro
Согласен со всем, что обозначено выше
источник

N

NoMad42 in Laravel Pro
NoMad42
хм... очень похоже что да)) пойду осознаю...
не. не подошло.
помимо того, что такой вариант ломается при появлении прочей сортировки (либо костылить и прикручивать запрос придётся еще зубодробительней)
так еще и нет возможности поддерживать сортировку заданную в полиморфной таблице.
источник

EG

Egor Gruzdev in Laravel Pro
NoMad42
не. не подошло.
помимо того, что такой вариант ломается при появлении прочей сортировки (либо костылить и прикручивать запрос придётся еще зубодробительней)
так еще и нет возможности поддерживать сортировку заданную в полиморфной таблице.
тогда на события создания/обновления записей, собирай все это "барохло" в так называемой индексной таблице и обрабатывай как тебе удобно, а полиморфы только для получения полной новости (статья или как там еще) без всяких сортировок и обработок.
источник

N

NoMad42 in Laravel Pro
Egor Gruzdev
тогда на события создания/обновления записей, собирай все это "барохло" в так называемой индексной таблице и обрабатывай как тебе удобно, а полиморфы только для получения полной новости (статья или как там еще) без всяких сортировок и обработок.
ну на данный момент так и происходит просто все лежит в полиморфе и я не вижу особого смысла выносить сортировочные поля в отдельную таблицу.
источник

A

Azer 🌚 in Laravel Pro
Всем привет. Кто знает есть ли способ из метода трейта, замержить возвращаемый массив с массивом в классе в том же методе? у меня метод тупо оверрайдится и все:)
источник

A

Azer 🌚 in Laravel Pro
при этом не трогать метод класса
источник

u

upside in Laravel Pro
При подключении трейта можно переименовать методы вроде
источник

u

upside in Laravel Pro
источник

u

upside in Laravel Pro
Типо того вроде
источник