
Aleh
19.04.2017
15:23:09
и там делать save

Sergey
19.04.2017
15:23:16
делается все проще

Aleh
19.04.2017
15:23:29

Google

Sergey
19.04.2017
15:24:33
точнее
class Product
{
private $data; // ProductModel
}
что-то в этом духе
и вот тут Product это уже будет сущность
а ProductModel просто property-bag, стэйт агрегата
ну да... в целом скорее всего понадобиться мэпить
хз
можно делать так

Aleh
19.04.2017
15:28:36
можно не юзать AR

Sergey
19.04.2017
15:29:04
class Product
{
public function __construct(ProductBuilder $builder)
{
$this->raise(new ProductAdded(/** data */));
}
}
и потом подписываться на ивенты и уже черз ar мэпить)
и ProductAdded можно делать как AR модельку

Aleh
19.04.2017
15:30:16
надо raise как-то имплементить)

Google

Roquie
19.04.2017
15:32:14
Кстати, никого не смущает то, что если мы выносим апдейт в команду, а команда принимает массив из формы, оно становится не особо юзабельным в дальнейшем?
Хотя с другой стороны, один черт, этой логики не должно быть в контроллере

Aleh
19.04.2017
15:36:29
я не понял сути вопроса

Roquie
19.04.2017
15:40:34
Я к тому, что когда обновляешь запись, тот код который я привел выше может сильно разрастись (на больших таблицах особенно) и он просится, чтобы его куда-то вынесли. Но после выноса, он переиспользован, скорее всего, не будет.

Sergey
19.04.2017
15:41:11
ну то есть я не понимаю что и зачем ты вообще делаешь
возьми orientdb и работаю напрямую с агрегатами
без херни с SQL

Roquie
19.04.2017
15:41:46
с большими сущностями особенно*

Sergey
19.04.2017
15:42:00
ну то есть у меня вопрос к декомпозиции

Roquie
19.04.2017
15:42:11
много полей

Sergey
19.04.2017
15:42:17
много полей - не проблема
делаешь value object-ы
и радуешься
апдейт - заменя одного VO на другой
то есть любой апдейт предвращается в инстанцирование объекта
в итоге логика "добавления" и "апдейта" сильно унифицируется

Roquie
19.04.2017
15:43:02
и со связями проблем нет?
опять я в рамках реляционки говорю )

Google

Sergey
19.04.2017
15:43:33
связи - это просто поля объектов
ну то есть какая разница string там или object или object[]
это просто стэйт
я не понимю твоих загонов
и что ты хочешь по итогу иметь
какую ты цель приследуешь

Roquie
19.04.2017
15:44:29
разницы нет, только чуть больше гемора при заполнении сущности

Sergey
19.04.2017
15:45:17
о чем ты?
я просто уже потерял нить разговора

Roquie
19.04.2017
15:45:46
))

Sergey
19.04.2017
15:45:51
ты хочешь сделать data mapper + uow поверх eloquent?

Sergey
19.04.2017
15:45:53
в этом нет смысла

Roquie
19.04.2017
15:46:02
хотел
теперь уже не хочу, когда поговорили о доктрине

Sergey
19.04.2017
15:46:34

Roquie
19.04.2017
15:46:46
теперь буду выкидывать свои persistense репозитории и переводить весь проект на доктрину

Sergey
19.04.2017
15:46:47
ну то есть опять же - какую цель ты приследовал этим желанием?

Google

Roquie
19.04.2017
15:47:05

Sergey
19.04.2017
15:47:23
ну то есть сделать тупо in-memory базу данных где все гоняется быстро

Roquie
19.04.2017
15:48:37
это уже по другой теме, а не то, что мы тут обсуждаем
Кстати, если использовать репозитории с eloquent без апдейтов, то апдейты будут размазаны где только не лень используя orm напрямую
Сейчас приходится всем этим пичкать репозитории, чтобы работа с базой была в одном месте.

Like
19.04.2017
16:07:49

Admin
ERROR: S client not available

Like
19.04.2017
16:09:08

Roquie
19.04.2017
16:11:04
Разве ?
ну да, в контроллерах, командах, сервисах

Like
19.04.2017
16:12:55
ну да, в контроллерах, командах, сервисах
Хм, у меня работа с базой в одной папке.
По типу:
Папка
подпапки (юзер, комментарии и т.п).
В каждой подпапке есть файл который отвечает полностью за работу с базой. Сама "база" внедряется с помощью DI, а методы хранятся вообще в другом месте (Но там что-то типа делегирования).
Вроде бы не плохо
Не знаю, поймешь или нет

Roquie
19.04.2017
16:15:28

Like
19.04.2017
16:15:33
А Eloquent ну нахер, я переходил с query builder'a на это, посидел пару месяцев и свалил. Связи удобная штука ( в плане кода), но потом по откладке (и еще кое-что) жопа.
Тем более, что я могу сделать так
И не нужны джоины )
И связи тоже
Выше на скрине image ($this->image) - и есть класс App\Eloquent\Image

Roquie
19.04.2017
16:18:24

Google

Like
19.04.2017
16:18:38
Практически он ?
В общем:
App\Eloquent\Class - чисто extends Eloquent
Папка - подпапки - сущность . Тут через DI внедряю класс из папки eloquent и пишу делегаторы. Вон как выше
И еще одна папка с подпапками - сущность: тут я через DI внедряю нужный мне выше класс, ну и описываю логику
Все это через провайдер.
Ну и контроллер "хавает" последнее
Только не знаю как поступать с некоторыми частями системы которые не особо относятся к сайту.
Например: сервис для работы с токеном.
По логике его не нужно пихать как я делаю это выше, а как описывать - фиг знает, еще не думал

Roquie
19.04.2017
16:23:37
> Только не знаю как поступать с некоторыми частями системы которые не особо относятся к сайту.
вынести в композер пакет?

Like
19.04.2017
16:24:55
Если так поступать, то нужно делать "универсальную систему". Я изначально думал дергать токен юзера с помощью готового средства в самой системе, то есть: зависимость.
Я не думал насчет этого еще если честно, но вариант хороший, спасибо )

Yegor
19.04.2017
18:54:51
Коллеги, разрешите похвастаться, второй том Elegant Objects наконец закончен и уже в продаже на Амазоне: http://amzn.to/2oW9qk4 Будет доступен доставкой по странам СНГ через две недели. Пишите на shop@yegor256.com

Oleg
20.04.2017
13:03:54
Будет ли на русском языке ???

Ilia
20.04.2017
13:04:41
Зачем?

Oleg
20.04.2017
13:05:31
Чтобы такие неграмотные как я тоже могли прочитать )
К сожалению бегло читать по английски не удается...
Но когда надо перевожу статьи для себя

Aleh
20.04.2017
13:07:03
посоны, самый сложный вопрос программирования: как назвать класс представляющий деньги с суммой больше 0?

Oleg
20.04.2017
13:07:39
NoNullMoney )))
PlusMoney ))

Ilia
20.04.2017
13:08:14

Aleh
20.04.2017
13:08:33
ну как-то связь между тем, что денег больше 0 и кошелек не оч очевидна

Ilia
20.04.2017
13:09:09
Ну деньги как таковые не могут иметь сумму, они могут иметь номинал

andretshurotshka?❄️кде
20.04.2017
13:09:21
Cash

Ilia
20.04.2017
13:09:36
Cash
Да хорошая метафора:)