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 ответов

11 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

E-V. Автор вопроса
Roman D. 🛰 romad.ru
Извлекать полюбасу)) как минимум- проверять наличи...

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

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

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

E-V. Автор вопроса
Roman D. 🛰 romad.ru
ну, фронт по умолчанию считается "дырявым"))) т.е....

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

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

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

E-V. Автор вопроса
Roman D. 🛰 romad.ru
да, запросы по первичному ключу оч быстрые :-) я б...

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

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

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

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

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

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

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

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

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

Roman D. 🛰 romad.ru
понимаешь, ключи - это НЕ бесплатно для производит...

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

Roman D. 🛰 romad.ru
понимаешь, ключи - это НЕ бесплатно для производит...

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

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

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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Any electron dev here?
Sayanth Tezro
12
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
did you mean this? if yes no you don't need it. just need a ui for handle process with ui and some terminal code. you don't want to re create adb your self you just want add u...
Mr Thieves
7
Карта сайта