@symfony_php

Страница 265 из 1418
vlad
01.08.2017
16:35:30
наверное, добавить что-то вроде WHERE id=id а id как параметр передавать?

т.е. UPDATE YourTable SET Field1 = Field1 + 1 WHERE id=id

Sergey
01.08.2017
16:49:49
обоснование то будет?
1. излишнее усложнение не несущее никакой пользы кроме экономии нескольких сотен байт на ордер 2. надо добавлять проверки аля "если уже было удалено бла бла". 3. надо усложнять выборки и "помнить об этом".

с другой стороны можно сделать у пользователя метод rememberAddress(Address $address) и повесить на доменный ивент OrderCreated

Google
Sergey
01.08.2017
16:50:47
абсолютно независимая логика управления адресами, сохранение истории

пилится за час-два

потому рекомендовать заведомо сложный и ненужный способ - так себе идея

Dmitry
01.08.2017
16:52:45
Причем тут экономия байт вообще. Хочешь сказать, что нормализация - это типа для экономии байт? А проверки и так придется, особо если пользователь поменяет адрес до постановки заказа в логистику.

Sergey
01.08.2017
16:52:48
по поводу же неймспейсов типа VO - это вообще раковая опухоль не не сущная никакой смысловой нагрузки, не подсказывающая где что искать и т.д.

а так как у тебя там софт делит - тебе не нужны там внешние ключи

Dmitry
01.08.2017
16:53:18
А, тогда больше нет вопросов ;)

Sergey
01.08.2017
16:54:00
ну если ты почитаешь "историю" того как возникла идея RDBS то ты узнаешь что сегодня дальше 3-ей нормальной формы - это экономия байт которая была актуальна в 70х

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

более того - если у тебя есть 2 несвязанные сущности - то нормальзация тут не причем

Dmitry
01.08.2017
16:55:19
Ну да, адрес доставки у пользователя и в заказе - это совсем разные сущности

Sergey
01.08.2017
16:55:19
да и целостность данных полностью вешать на базу у тебя всеравно не выйдет (если без процедур и тригеров) а потому зачем вообще заморачиваться

Google
Sergey
01.08.2017
16:56:18
Ну да, адрес доставки у пользователя и в заказе - это совсем разные сущности
именно так, или это типа сарказм был? Если так - то то, является ли сущность одной и той же, или же какие у них взаимоотношения надо определять не по названиям а выделяя роли и обязанности этих сущностей.

обязанность сущности UsedAddress которая хранит последний адрес - это нужно покупателю что бы он потом меньше тратил время при оформлении заказа. В случае же с заказом адрес доставки там вообще VO а не сущность. Потому это вообще разные штуки

Dmitry
01.08.2017
16:58:02
Почему же в заказе - это VO, а у пользователя - сущность?

С чего такое уважение пользователю? ;)

Sergey
01.08.2017
16:59:19
Почему же в заказе - это VO, а у пользователя - сущность?
потому что у тебя есть список адресов, и ты можешь ими управлять. Мы не настолько их "уважаем" что бы скажем им репозиторий свой делать - можно работать в контексте юзера с ними (типа юзер корень агрегата сущностей), но и коллекцию VO мы делать как бы можем но это будет усложнять операции удаления.

а в заказе "адрес" это просто поле. Оно никогда не поменяется (либо заменится на другое продавцом)

Dmitry
01.08.2017
17:00:13
интересный способ выбора VO vs Entity - "что бы удалять удобнее было" ;)

Sergey
01.08.2017
17:02:17
интересный способ выбора VO vs Entity - "что бы удалять удобнее было" ;)
выбор делать что-то VO или Entity строится на основании одной единственной вещи. Нужно ли тебе отличать один адрес от другого или нет. То есть в контексте адресов нас интересует именно само значение адреса. А в контексте пользователей нас интересует конкретный адрес, его идентификатор. Дабы иметь возможность его удалить. Ты можешь конечно это реализовать тем что сделаешь еще один VO который нам надо будет найти в коллекции и удалить но это даже звучит тупо

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

еще момент

"последние использованные адреса" юзера и "адрес заказа" находятся в совершенно разных контекстах

а потому глупо вводить общую зависимость между ними

Dmitry
01.08.2017
17:08:38
ага, я понял, ты адрес рассматриваешь как набор какого-то абстрактного текста

Sergey
01.08.2017
17:10:09
ага, я понял, ты адрес рассматриваешь как набор какого-то абстрактного текста
в контексте ордера он мне именно такой и нужен. Может еще включать координаты и тд. это не столь важно.

мне важно что с этим адресом никогда и ничего не приключится

и он останется в ордере до скончания интернета

Dmitry
01.08.2017
17:10:43
вот в контексте ордера тебе скорее всего потребуется привязка к адресному справочнику

Google
Sergey
01.08.2017
17:11:26
ну то есть что такое "адресный справочник" и какое отношение он имеет к ордерам?

Dmitry
01.08.2017
17:11:37
кооринаты? ;) для отправки заказа?

Sergey
01.08.2017
17:11:55
да, ты можешь по координатам получить и полный адрес и zip код и все такое

ну или эта инфа у тебя уже есть в VO

имея страну и zipcode для вычисления стоимости доставки например знать ничего не надо

ну разве что вес посылки

всеравно ты будешь это все через сторонние сервисы разруливать а стало быть связи строить несчем

ну и опять же - ЕСЛИ у нас придет требование при котором адрес должен стать сущностью - не вопрос. Он станет сущностью в контексте заказов и все.

Dmitry
01.08.2017
17:13:51
да... это круто вместо того, что бы привязаться к справочнику идентифицирующему место доставки - хранить координаты и искать сервисы, где это отресолвить

Sergey
01.08.2017
17:14:00
появится сущность DeliveryAddress а в контексте юзеров будет UsedAddress

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

короч как знаешь, дело твое

Dmitry
01.08.2017
17:14:47
М... ты представляешь, например, что такое ФИАС?

Sergey
01.08.2017
17:14:53
можешь делать как сущность и лепить общую зависимость между модулями

видимо какой-то кадастр адресов, там есть апишка

опять же в требованиях ничего небыло - не имею привычки придумывать то чего не будет на проекте

Dmitry
01.08.2017
17:16:13
Ладно, давай упростим задачу. У тебя есть 10 точек выдачи. Получить товар можно в любой. У точки выдачи есть адрес. В заказ будешь впихивать все эти данные и пихать в VO?

Sergey
01.08.2017
17:16:48
Ладно, давай упростим задачу. У тебя есть 10 точек выдачи. Получить товар можно в любой. У точки выдачи есть адрес. В заказ будешь впихивать все эти данные и пихать в VO?
это не адреса, это точки выдачи. Ты будешь привязывать доставку к точке выдачи. И это будут сущности. И у каждой адрес как VO ))

более того

Google
Sergey
01.08.2017
17:17:12
это может быть как часть информации о доставке и у тебя может быть больше одной стратегии для оной

Dmitry
01.08.2017
17:17:18
Чем точка выдачи с адресом отличается от моего офиса с адресом? ;)

Sergey
01.08.2017
17:17:41
Чем точка выдачи с адресом отличается от моего офиса с адресом? ;)
тем что адрес доставки в контексте ордера это VO а точка выдачи это сущность в контексте модуля ордера

потому что точка выдачи будет иметь свои какие-то дополнительные штуки, может свою юр инфу какую и т.д. может еще чего

ну и еще - у тебя явно надо на уровне "точки выдачи" иметь список заказов относящихся к ним

то есть налицо отношение двух сущностей

а не "данные какой-то сущности"

Dmitry
01.08.2017
17:18:51
Не понял, окей... было у фирмы 10 точек выдачи, а потом они взяли, и открыли точку выдачи у двери каждой квартиры ;)

Почему точка выдачи - это сущность, а квартира - внезапно перестает ей быть.

Sergey
01.08.2017
17:19:20
Admin
ERROR: S client not available

Sergey
01.08.2017
17:19:55
Почему точка выдачи - это сущность, а квартира - внезапно перестает ей быть.
потому что нас не интересует в контесте заказа цикл жизни какой-то там квартиры. Нас интересует информация о том куда доставлять в данный момент.

и даже если дом снесут информация должна сохраниться

если у тебя сущность может быть только создана и она имутабельна всегда - это VO

даже не так

Dmitry
01.08.2017
17:20:35
если точку выдачи закроют - информация тоже должна сохраниться

Sergey
01.08.2017
17:20:41
все объекты VO по умолчанию. Иногда VO мало и нужны сущности

если точку выдачи закроют - информация тоже должна сохраниться
она и сохранится, только вместо soft delete у тебя будет статус "закрыто"

Dmitry
01.08.2017
17:21:32
ну так и у квартиры будет статус "дом снесен" ;)

Sergey
01.08.2017
17:21:44
ну так и у квартиры будет статус "дом снесен" ;)
но эта информация не нужна бизнесу

Google
Sergey
01.08.2017
17:22:05
нас как бизнес по доставке вполне себе интересует цикл жизни наших точек выдачи но вообще не интересует цикл жизни квартир или домов

ключевое слово НАШИХ точек и ЧУЖИХ квартир

в целом все от домена зависит. Если ты скажем не каталог товаров делаешь а скажем систему ЖКХ то да, адрес будет сущностью

Dmitry
01.08.2017
17:23:05
Равно как бизнесу не нужна информация, что заказ 555 сделанный 10 лет назад был доставлен в точку выдачи, которая сейчас закрыта

Sergey
01.08.2017
17:23:32
Равно как бизнесу не нужна информация, что заказ 555 сделанный 10 лет назад был доставлен в точку выдачи, которая сейчас закрыта
эта информация может пригодится когда ты будешь анализировать откуда чаще забирали заказы

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

Dmitry
01.08.2017
17:24:05
А с чего ты взял, что не потребуется анализировать распределение доставок по округам, например

Sergey
01.08.2017
17:24:19
и если тебе 3 года назад пришлось закрыть 10 точек потому что денег небыло а сейчас ты хочешь расширяться - эта информация может тебе помочь

для этого не нужно делать адрес сущностью)

Dmitry
01.08.2017
17:25:04
Ну так такой же ответ про точку выдачи. Есть информация в VO - анализируй ;)

Sergey
01.08.2017
17:25:38
короч ладно, пойду работать. Просто рекап: - VO по дефолту. Если можно не делать сущность а делать VO - делай VO. - сущности если нужен цикл жизни объекта - сервисы если логика не укладывается в рамках сущности или VO или надо просто изолировать отдельные бизнес правила (или инфраструктуру)

Ну так такой же ответ про точку выдачи. Есть информация в VO - анализируй ;)
это не так удобно. А вот с VO - легко. Особенно если есть координаты - можно загрузить в эластику и через кибану карту получить)

vlad
01.08.2017
17:26:26
ребят подскажите, пожалуйста, если знаете `public function incrementQuantityByField($field, $id, $em) { $sql = " UPDATE task SET $field=$field+1 WHERE id=$id; "; $stmt = $em->getConnection()->prepare($sql); $stmt->execute(); return $stmt->fetchAll(); }` ошибка вылетает следующего формата: [PDOException] SQLSTATE[HY000]: General error

Sergey
01.08.2017
17:26:27
с центрами масс и все такое

vlad
01.08.2017
17:26:30
не знаете почему?

Dmitry
01.08.2017
17:26:39
(в сторону) жизненный цикл... это про переименовывание улиц? .. ;)))

vlad
01.08.2017
17:27:28
таблица называется task поле в ней передаю как параметр ну и ID тоже

Sergey
01.08.2017
17:27:45
(в сторону) жизненный цикл... это про переименовывание улиц? .. ;)))
это часть жизненного цикла улиц да. Имя может поменяться но эта улица остается именно этой улицей. И в другом горое может быть такая же улица. Но нас не интересует жизненный цикл улиц в контексте доставки заказов.

абстрагируйся

Dmitry
01.08.2017
17:28:03
А в контексте анализа доставок - интересует ;)

Sergey
01.08.2017
17:28:12
с точностью до 100 метров

Страница 265 из 1418