
Sergio
01.08.2017
08:53:52

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

Sergio
01.08.2017
08:54:12

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

Sergey
01.08.2017
13:59:38
если такой уже был соответственно не добавляешь

Google

Sergey
01.08.2017
13:59:54
просто дублируешь данные и все
заказы отдельно - пользователи отдельно, они никак не пересекаются, все просто и все согласно требованиям

Sergey
01.08.2017
14:00:38

Sergey
01.08.2017
14:00:41
запомни - дублирование кода не проблема. Проблема дублирование логики. И еще одно - сначала читаемость и понятность кода а потом уже проблемы дублирования. Далеко не всегда 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

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

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

Dinar
01.08.2017
14:44:10

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 и связью и из юзера и из заказа, но нужно тогда еще запредить редактирование, если есть связь с заказа, т.е. делать редактирование через копирование

Sergey
01.08.2017
15:06:26


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

Sergey
01.08.2017
15:06:43

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?

Valentin
01.08.2017
15:16:23

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;