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

Коллеги всем привет ) Задал вопрос в чат новичков, сорян, если

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


Есть заказ у него есть связи с сущностями БД метод доставки (del), статус ((st) и метод оплаты (pay)

Соответственно фронт отправляет айдишки этих сущностей

Сейчас возник спор как правильно создавать заказ
1. Методом create
Order::create([
Del = 1,
Pay = 1,
St = 1
])
Впринципе комфортно, доводы против - привязаны к айдишкам, не видим явных и обязательных связей для заказа
2.
St = Status::find(1)
Del = Delivery::find(1)
Pay = Payment::find(1)

И потом для каждой сущности
Order->relation()->associate(entity)
Order->save()
Доводы за - все методы связи сущностей можно вынести в метод модели и тогда будем видеть обязательные связи, без которых модель не может быть создана. Доводы против - запросы в бд на извлечение сущностей для связи, не известно как скажется под нагрузкой

Кто что думает, как лучше делать создание ?)

23 ответов

29 просмотров

@Adelf32 он вот про это, вангую

Почему фронт управляет статусом? Паттерн стейт машина знаем? :)

E-V. Автор вопроса
Артём
@Adelf32 он вот про это, вангую

Какой бы ты токсичный человек не был, твое мнение, Артем, по вопросу тоже очень интересно)

E-V. Автор вопроса
Владислав Субботин
Почему фронт управляет статусом? Паттерн стейт маш...

Потому что на фронте происходит выбор разных значений

E V.
Потому что на фронте происходит выбор разных значе...

А должно быть инкапсулировано в БЛ, ИМХО. Пусть с фронта летит пользовательский ввод и обрабатывается контроллером

E-V. Автор вопроса
Владислав Субботин
А должно быть инкапсулировано в БЛ, ИМХО. Пусть с ...

Тогда приходим к тому, чтобы извлекать и использовать метод 2)

E-V. Автор вопроса
Владислав Субботин
Опасаетесь за производительность?

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

Извлекать полюбасу)) как минимум- проверять наличие в бд- иначе с фронта прилетит всякое разное)) find работает быстро, так что сервер это даже и не заметит.

E-V. Автор вопроса
🅿️🅾️Ⓜ️🅰️♓️🈴 romad.ru
Извлекать полюбасу)) как минимум- проверять наличи...

Спасибо ) Мне уже объяснили что фронт отвечает в таком случае за БЛ, что не есть хорошо)

E V.
Спасибо ) Мне уже объяснили что фронт отвечает в т...

ну, фронт по умолчанию считается "дырявым"))) т.е. все валидации полей формы на фронте - они не для безопасности, а для улучшения юзабилити, чтобы юзер не тыкал по 10 раз мышью или пальцем в экран)))

E-V. Автор вопроса
🅿️🅾️Ⓜ️🅰️♓️🈴 romad.ru
ну, фронт по умолчанию считается "дырявым"))) т.е....

я просто считал, что фронт работает аппелирует данными, которые мы ранее извлекли и подготовили для него, поэтому потворная проверка приведет к увеличению запросов к БД, что не есть хорошо) но в целом, как тут все обьяснили, эти запросы не являются узким местом, поэтому за них можно не париться)

E V.
я просто считал, что фронт работает аппелирует дан...

да, запросы по первичному ключу оч быстрые :-) я бы сказал - САМЫЕ быстрые))

E-V. Автор вопроса
🅿️🅾️Ⓜ️🅰️♓️🈴 romad.ru
да, запросы по первичному ключу оч быстрые :-) я б...

Тогда немного глубже пойду с вопросом ) А если мы за правило возьмём такую предварительную валидацию связей перед записью, то какой смысл во внешних ключах?) Или по ним тоже индекс вешается для скорости поиска ?

E V.
Тогда немного глубже пойду с вопросом ) А если мы ...

внешние ключи - это скорее для целостности БД, чем для чего-то еще. вообще, уместность их использования - вопрос холиворный, ибо они не только не ускоряют, но могут и замедлить скорость работы. тут по ситуации, по Благословению Свыше 😄

E V.
Тогда немного глубже пойду с вопросом ) А если мы ...

например, чтобы не удалить то, что не должно быть удалено

E-V. Автор вопроса
Rus Skazkin
например, чтобы не удалить то, что не должно быть ...

Я просто везде каскадное удаление почти вешаю)) так что замечание такое, буду пересматривать свои взгляды в этом вопросе )

E V.
Я просто везде каскадное удаление почти вешаю)) та...

понимаешь, ключи - это НЕ бесплатно для производительности )) будь иначе - на КАЖДОЕ поле просто вешали бы индексы по дефолту и всё )) т.е. тут всегда поиск компромисса, между тем и этим)

🅿️🅾️Ⓜ️🅰️♓️🈴 romad.ru
понимаешь, ключи - это НЕ бесплатно для производит...

это не бесплатно по размеру БД вроде? Как с производительностью связано?

🅿️🅾️Ⓜ️🅰️♓️🈴 romad.ru
понимаешь, ключи - это НЕ бесплатно для производит...

Ключи это фактически индексы + связность и целостность. Если ты не используешь связи на уровне базе, то в случае создания свчзи в модели, связующее поле ты все равно выставишь индекс. Тогда почему бы не убить двух зайцев сразу, получить индекс + целостность данных на уровне базы данных.

Rus Skazkin
это не бесплатно по размеру БД вроде? Как с произв...

Как говорится - гетмикротайм вам в руки))) и по завершении можно пилить статью на Хабр ))

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта