@symfony_php

Страница 264 из 1418
Dinar
01.08.2017
08:54:07
Я бы вообще наверно перенес tmp из системного в папку приложения.

Sergio
01.08.2017
08:54:12
Ну execution на папку означает переходить в нее и читать список в ней.
странно просто, что в другом месте кода не возникало подобной ситуации о_х

Dinar
01.08.2017
08:54:13
Тогда легче можно очищать кэш

Google
Dinar
01.08.2017
08:54:19
Фиг его знает :)

Так ведь навскидку не скажешь.

Может он пересоздавался тут а там новый создался

Sergio
01.08.2017
08:54:42
ну да, согласен, конечно

Dinar
01.08.2017
08:54:47
Сложно сказать

Sergio
01.08.2017
08:55:45
Сложно сказать
спасибо большое!

Sergey
01.08.2017
11:36:26
привет, подскажите плиз по архитектуре. Вот у юзера есть адреса. При создании заказа юзер вводит новый адрес или выбирает из списка. Этот адрес должен добавится к юзеру если такого небыло. Самое главное что в заказе тоже должен быть этот адрес, но не ссылкой, а для истории. То есть адрес свой юзер может удалить, а в заказе он должен остаться. Для этого использовать два разных класса как-то не оч удобно, придется туда сюда гонять данные

может вести отдельную табличку order_history и просто туда копировать аля лог?

Mikhail
01.08.2017
11:42:10
ну тогда нужно либо помечать этот адрес удалённым и не выводить больше нигде, кроме этого заказа, либо дублировать данные

Yuriy
01.08.2017
12:25:19
Добрый день подскажите пожалуйста в чем может быть причина отправки писем (стандартный мейлер + gmail) только после перезапуска службы bin/console gos:websocket:server —env=dev ?

Valentin
01.08.2017
12:41:43
может вести отдельную табличку order_history и просто туда копировать аля лог?
Исходя из описания, проще всего добавить поле isArchived у сущности Address

Google
Sergey
01.08.2017
13:59:54
просто дублируешь данные и все

заказы отдельно - пользователи отдельно, они никак не пересекаются, все просто и все согласно требованиям

Sergey
01.08.2017
14:00:38
просто дублируешь данные и все
вопрос куда дублировать, отдельную таблицу лучше или в сам заказ?

Sergey
01.08.2017
14:00:41
Исходя из описания, проще всего добавить поле isArchived у сущности Address
не надо просто делать это общую таблицу между заказами и юзерами - будет меньше боли

запомни - дублирование кода не проблема. Проблема дублирование логики. И еще одно - сначала читаемость и понятность кода а потом уже проблемы дублирования. Далеко не всегда DRY полезен.

есть еще связанность и прочее

это намного опаснее чем просто тупое дублирование кода

Sergey
01.08.2017
14:07:45
в сам заказ
мне не очень нравится, что приходится между этими адресами через dto туда сюда, имеется ввиду между адресом юзера и адресом в заказе

Sergey
01.08.2017
14:21:41
сделай VO под названием Address и гоняй его

и все будут счастливы

embedable штука и все

а сущность для юзера назови UsedAddress

вуаля

class UsedAddress { private $user; // User private $address; // Address }

Dinar
01.08.2017
14:33:53
сделай VO под названием Address и гоняй его
А чем тут отличается? Они же вроде как отличаются просто наличием или отсутствием методов каких-то кроме геттеров и сеттеров.

Dmitry
01.08.2017
14:37:49
у DTO не должно быть никакого поведения, у VO может... и ну VO как бы обычно малые объекты представляющие какие-то неделимые типы

Aleh
01.08.2017
14:39:40
отличие в инкапсуляции и полиморфизме :)

Google
Sergey
01.08.2017
14:44:21
не совсем понял. Вот у user адреса как $addresses ArrayCollection. По факту это просто crud. Юзер может удалить, добавить, обновить адрес. У заказа же наоборот address как Embedded и это отдельный класс OrderAddress. Суть в том, что и в том и другом случае форма мапится на одну и ту же dto, из которой потом появляются адреса (форма создания заказа и форма добавления адреса). Такой подход нормальный или фиговый? Ну и почему этот вопрос всплыл, потому что помимо адресов есть еще различные сущности, которые надо так же дублировать в заказ. То есть подход масштабируется)))

Dmitry
01.08.2017
14:48:42
Если попроще, то копировать... сделать, например, VO\Address::createFromAddressEntity(Address $address) и поместить в Order. И приделать к доктрине ресолв типа VO\Address с сериалайзом в json

Если посложнее, то таблица адресов с softDelete и связью и из юзера и из заказа, но нужно тогда еще запредить редактирование, если есть связь с заказа, т.е. делать редактирование через копирование

Dinar
01.08.2017
15:06:37
Интересная проблема возникла. Может кто-то решал подобное. Обновляюсь с 2.8 на 3.2. И формы сейчас нельзя инстанциировать руками. То есть в $this->createForm() нельзя передавать инстанс. Так вот в этом коде туда передается форма, которая сделана как сервис. То есть она вызывается из контейнера, передается в createForm(), и так же используются методы, созданные в ней. И вот именно использование самостоятельно созданных методов все и обламывает. Было ли у кого-то подобное? :)

Dmitry
01.08.2017
15:08:12
"а я на коне" забыл

очень плохая идея
обоснование то будет?

Dinar
01.08.2017
15:09:42
$formType = $this->get('import_guests_form_type'); $form = $this->createForm($formType, $importGuests); if ($formType->getStep()) { // blabla } Как вот это можно переписать на 3.2?

Dinar
01.08.2017
15:17:19
Passing type instances to FormBuilder::add(), Form::add() or the FormFactory is deprecated since version 2.8 and will not be supported in 3.0. Use the fully-qualified type class name instead (CA\GuestBundle\Form\Import\ImportGuestsType).

Valentin
01.08.2017
15:19:53
А, понятно. В любом случае, в примере видно, что надо просто ::class в качестве первого аргумента использовать

Dinar
01.08.2017
15:20:19
Само собой. :)

Я и говорю.

Но тогда мы не сможем получать инстанс формы за пределми. А он ведь нужен

Valentin
01.08.2017
15:26:39
То есть проблема исключительно в том, чтобы DI работал? Если да, то вот ответ: https://github.com/symfony/symfony/issues/17013#issuecomment-253493082

Dinar
01.08.2017
15:27:38
Нееее. Проблема не в DI.

С DI как раз все понятно

Посмотри еще раз код, который я запостил

Google
Aleh
01.08.2017
15:28:03
обоснование то будет?
Хз на счет оч плохой, но так надо будет плодить лишние колонки для каждой сущности, которая захочет юзать адрес. Это ж могут быть разные концепции ваще, адрес пользователя и адрес заказа или там адрес конца маршрута

Проще сделать жсон поле и хранить массив)

Dmitry
01.08.2017
15:28:55
да проще ваше все в жсон и в файл

Aleh
01.08.2017
15:29:02
В файл нет

А в поле да

Dmitry
01.08.2017
15:29:38
в excel, зато потом сразу по FTP грузишь и директору отправляешь

Aleh
01.08.2017
15:29:39
Проще сделать жсон поле и хранить массив)
В этом варианте я ничего не теряю, а жизнь немного упрощаю

Фу, грузить директору по фтп в 2017

Admin
ERROR: S client not available

Dmitry
01.08.2017
15:30:15
точно, нормальную форму придумали дрочеры

Aleh
01.08.2017
15:30:21
В экселе(

точно, нормальную форму придумали дрочеры
Академические концепции - это клево и хорошр и ими надо уметь пользоваться

Dmitry
01.08.2017
15:31:22
ага, куда проще не забивать себе голову и класть все в json :)

Aleh
01.08.2017
15:31:24
Дррчеры или нет не знаю, а люди умные были, да

Dmitry
01.08.2017
15:34:07
а я что, спорю что это проще сдеать ;) конечно проще ;) особо когда нахреначил и свалил на другую работу ;)

Aleh
01.08.2017
15:34:49
Да не, потом тоже проще часто

В поддержке

vlad
01.08.2017
15:54:47
ребят

всем привет

Google
vlad
01.08.2017
15:55:09
помогите, пожалуйста, у кого есть минутка пытаюсь продумать как лучше реализовать тривиальную, в общем-то, задачу

у меня работает параллельно 50 процессов каждому надо записать в одно и тоже поле в сущности некоторое число грубо говоря инкрементировать предыдущее число на + 1

т.к. они работают параллельно, то получать предыдущее значение вообще не вариант из 50 туда записать успевают порядка 10

Dinar
01.08.2017
15:56:47
В Бд?

vlad
01.08.2017
15:56:58
реализовывал как-то так: $buffer = $объект->получитьЗначениеПоля(); $объект->записатьЗначениеПоля($buffer+1):

т.к. они параллельны, то записывают штук 10

Dinar
01.08.2017
15:57:11
Мускль?

vlad
01.08.2017
15:57:35
да, бд на mySQL

Dinar
01.08.2017
15:57:52
Если да, то я бы использовал RAW запрос. Тогда запись была бы атомарной.

Без SELECT UPDATE

просто UPDATE table SET field=field+1;

vlad
01.08.2017
15:58:38
оу

даже не копал в эту сторону

спасибо тебе большое, сейчас попробую

Dmitry
01.08.2017
16:00:59
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/transactions-and-concurrency.html

vlad
01.08.2017
16:02:11
всё же спрошу так как работа вся происходит в рамках двух команд, одна из них плодит процессы а другая уже в процессе инкремент делает если я буду использовать вариант с raw запросом я могу вынести эту функцию, с raw, в сервис, например а в процессе её уже дёргать и через doctrine делать запрос?

извини, опять же, за возможно где-то неверную терминологию

Dinar
01.08.2017
16:02:58
Да без проблем.

vlad
01.08.2017
16:04:22
Спасибо ещё раз :)

Dmytriy
01.08.2017
16:29:00
всем привет. помогите, пожалуйста, переделать sql запрос в dql или doctrine query builder. пол дня бьюсь, не получается. сам sql запрос: select dish.name as Блюдо, sum(history.qty) as Количество from history inner join dish on history.dish_id = dish.id left join shop on dish.shop_id = shop.id where year(history.order_date) = '2017' and shop.id = 8 group by Блюдо having Количество > 10 order by Количество desc;

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