170 похожих чатов

Всем привет. Подскажите, можно как-то одним запросом выбрать все меню

и все ссылки каждого меню в массив links без дополнительных циклов и т.д? или одним не получится, как в 2 запроса сделать знаю

14 ответов

12 просмотров

не видно структуры твоих таблиц, но скорее всего можно.

Eager Loading + Resources

Aleksey- Автор вопроса

Надо не через eloquent

Aleksey- Автор вопроса

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

Aleksey- Автор вопроса

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

Всегда можно использовать кеширование данных. К тому же - добавить обновление через очереди (хотя бы синхронно). Первый раз может быть медленный, но позже - всё себе вполне оптимизируемо. Да и всегда можно написать своё решение для такого. Создайте как пакет для переводов со своим ServiceProvider’ом и пользуйтесь им, добавляя нужный трейт к модели, к примеру. Или используя нужный сервис для перевода.

Своё решение - куда оптимальней (возможно). Из-за того, что у Вас есть уже минимум зависимостей и нет дополнительно установленных пакетов. Можете даже с raw работать, в таком случае, или с моделью с помощью паттерна Strategy. Тут у Вас будет нужная гибкость и нужная скорость. Плюс возможность глянуть на перформанс.

А Вы то уже пробовали то кеширование и очереди?

Aleksey- Автор вопроса

да, мне не нравится такой подход, сделать абы как, закинуть все в очередь, пусть она там обработается, закешируется и быстро все работает(так себе)

Не просто так же создано было Eloquent, DoctrineORM 🤷🏻‍♂️

Aleksey- Автор вопроса

не аргумент

Кэш нужен только тогда, когда у тебя будет минимальный miss cache. Иначе кэш будет ВРЕДЕН. По моему ты смотришь на ситуацию «у меня нагрузка 3 индейца в месяц». В этом случае можешь даже запросы в цикле делать. Но мне казалось мы про другое говорим.

Откуда мнение, что кэширование можно использовать всегда как приятное дополнение? При высоком кэш миссе ты сначала пойдёшь в кэш (это не бесплатно), а потом снова в базу. И если прикинуть экономию, то может оказаться, что ты получил замедление.

Aleksey- Автор вопроса

Я к тому, что то что предложили выше, не пытаться решить проблему, а просто убежать от нее(типо в любой непонятной ситуации кешируем и все)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта