Юра
Бедную логику не знают куда засунуть
Maxim Kainov
Когда-то писали все в контроллере
Можешь в интерактор ее перенести
Юра
Мне нравится команда что вся логика в одном месте и легко читается
Maxim Kainov
То что ты называешь командой это по всей видимости интерактор или юзкейс
Maxim Kainov
Хотя, как угодно конечно можно назвать. А можно и никак не называть )
Юра
В моем понимании команда это что-то что меняет состояние системы, может быть сериализована, сохранена, может поддерживать откат
Юра
А и атомарна
Юра
Чтобы не вышло что мы создали файл но энтити нет к примеру
Юра
Её можно к примеру кинуть в ребит на исполнение
Юра
Или просто в пхп вызвать
Юра
Если прикрутить логику зависимостей, то одна команда может ждать пока другие не выполнятся
Юра
Самый просто пример командыоо команда DeletrUser которая в методе do выставляет флаг isDeleted а в undo возвращает обратно
Maxim Kainov
Сериализация, откат
Юра
Да для простых задач это оверхед
Юра
Часто в црм такой паттерн заходит, когда надо видеть историю изменений кто что делал
Maxim Kainov
Ну хз, команда это просто, сигнал - реакция
Юра
Есть команда, видно когда создана, кем, статус, ошибки
Maxim Kainov
Это уже у тебя транзакционная команда какая то получается )
Maxim Kainov
С поддержкой сериализации )
Вадим
Ну хз, команда это просто, сигнал - реакция
Это просто метод сущности, если она затрагивает одну сущность, и/или всех ее чайлдов )
Вадим
Какая может быть сериализация у команды, если у нее нет стейта, на то она и команда? )
Юра
Команда без стейта это не команда
Юра
Это хз шо ивент какой-то
Юра
Звпустил и забыл
Вадим
Команда без стейта это не команда
А что ты хранишь в стейте команды?
Юра
Все что ей надо знать чтобы выполнить ее
Юра
Юзер айди который удалить или имейл на который письмо отправить
Юра
Это похоже на flux
Юра
На фронте
Юра
Параметры но команда может быть вызвана позже
Юра
Если она ачинхронная к примеру
Юра
Она ж должна стейт сохранить
Вадим
Эм, это уже не команда ;) А таск/ивент. Походу у нас разные терминологии
Юра
Да походу
Юра
Ну и undo она без стейта не сделает
Юра
Ей надо знать что она делала
Вадим
$cmd = new BanCommand($userRespository); $cmd->blockUser($userId); $cmd->unblockUser($userId);
Вадим
Можно разделить на 2 команды, но для удобства можно и в одной
Юра
Да суть такая
Юра
Все верно
Юра
Обычно правда там один интерфейс для выполнения
Юра
Do undo
Вадим
Стейт оправдывается если использовать CommandBus ... но там команда, это по сути своей ивент
Maxim Kainov
Maxim Kainov
Почему не бы не сделать просто UserService или UserBanService
Юра
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Maxim Kainov
Юра
Нету смысла
Maksym
Народ, всем привет. Не подскажете, какой метод нужно добавить к своему типу данных для Doctrine что бы при генерации миграций не дублировались уже выполненные sql команды?
Alexander
Приветы. Парни, подскажи русский смс сервис, а то smsc.ru гнустный опыт дал. Сорри что оффтоплю(
Anonymous
Вроде нормный.
Alexander
Спасибо, посмотрю
Константин
Всем привет. Хэлпаните, плиз. Делаю валидацию и вывожу месседж Object(App\\Entity\\User).login:\n Не корректный логин (code de1e3db3-5ed4-4941-aae4-59f3667cc3a3) Можно ли как то избавиться от служебной информации?
Константин
Есть кто живой то?
Aleksandr
нет
Anonymous
я дед инсайд
artem
А месседж свой прописать с value и property
Константин
Alexander
Видел, спасибо
Aleksandr
п
Гречушников
ребят. подскажите как составить запрос в доктрине. есть категории. есть продукты. многие ко многим. надо вывести список категорий и сделать подсчет продуктов в каждой категории
Гречушников
хотя бы алгоритм для начала. sql запрос составить нет проблемы. интересно как это доктриной сделать. пока не смог разобраться.
Egor
SELECT category, count(category.products) FROM App\Entity\Category category GROUP BY category не работает?
Aleksandr
$yourCount = $qb->select('a.category, count(a.category) ->from('App\Entity\Category', 'a') ->groupBy('a.category') ->getQuery() ->getResult();
Гречушников
$result = $this->createQueryBuilder('c') ->select('c.id, count(c.products)') ->groupBy('c.id') ->getQuery() ->getResult(); попробовал вот так
Egor
$this->createQueryBuilder('category') ->select('category', 'COUNT(product)') ->join('category.products', 'product') ->groupBy('category') ;
Гречушников
Category Entity: https://paste.laravel.io/5d6df55f-6b5d-4f9a-835f-3250ef24e4c2 #message: "[Semantical Error] line 0, col 21 near 'products) FROM': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected." -previous: Doctrine\ORM\Query\QueryException {#843 #message: "SELECT c.id, count(c.products) FROM Framework\Src\Common\Models\Backend\Entity\Ecommerce\Category c GROUP BY c.id"
Гречушников
угу, вижу. спасибо/
Kirill
боян
artem
А у кого-то есть рабочий докер образ под симфу стек: php7.4 apache mysql. Стек не очень комфортный, это для студентов чтобы не объяснять лишнего
artem
Ну и симфа 4.4 в стеке, уже не помню какие требования по экстеншн для сайт скелета