
Konstantin
19.03.2018
14:56:37
треш будет когда придет заказчик и скажет "у нас чот там бэкенд тормозит и по 3 секунды запрос не отдается"

Sergey
19.03.2018
15:01:23

Konstantin
19.03.2018
15:01:50
ну да сейчас как раз фикстуры и пишу

Sergey
19.03.2018
15:02:51

Google

Sergey
19.03.2018
15:03:02
я до миллиардов пока не дорос потому тут ничего сказать не могу(

Konstantin
19.03.2018
15:03:18
да, я планировал сиджем протестить

Sergey
19.03.2018
15:09:26
да, я планировал сиджем протестить
Вопрос. А отдавать на фронт по сколько записей планируется? По 100-200 или сразу лямы?
Если юзать доктрину (а я думаю, что она есть тк это symfony), то лучше не маппить данные на сущности, а сразу отдать фронту. Это имеет смысл если нужно отдать много товаров.
Часто натыкался на то, что разрабы тратят время на оптимизацию запросов/индексов и забывают, что с таким количеством сущностей с доктриной не удобно работать.

Konstantin
19.03.2018
15:10:30
ну, лимит на запросы к спискам до 100 пока.

Sergey
19.03.2018
15:10:42
тогда не парься)
мы просто часто выборки делаем без лимитов, такая специфика )

Konstantin
19.03.2018
15:11:36
ок понял )

Sergey
19.03.2018
15:16:46
но у меня вообще особое к этому отношение)

Konstantin
19.03.2018
15:19:43
вообще я сейчас как раз к этому подошел
есть некоторый набор, полей типа, которые не хочется светить наружу выплевывая сразу сущность
поэтому придется видимо добавить DTO для апи, ну, без этого видимо никак теперь
хотя вроде какой то другой механизм как мне кажется есть

Google

Arky
19.03.2018
15:38:03

?
19.03.2018
16:26:49
решил я тут создать свой констрэйнт, начал делать как описано тут: https://symfony.com/doc/current/validation/custom_constraint.html , но вот что-то не пойму, можно ли там создать такой констрэйнт, чтоб чекать сразу 2 поля формы (надо проверить в пароле вхождения из логина) или лучше для этого использовать коллбек констрэйнт?

Vladislav
19.03.2018
16:27:30

?
19.03.2018
16:27:54

$iD
19.03.2018
16:35:06
Тогда делаешь как делал, но в таргет пишешь class и вешаешь на весь класс

Елнур
19.03.2018
16:38:26
http://symfony.com/blog/new-in-symfony-4-1-internationalized-routing

?
19.03.2018
16:50:04
хм
а, там же есть
спасибо

Salavat
19.03.2018
17:15:18
Ya.ru - ru, ya.com - es , например
Через листенер знаю

Sergey
19.03.2018
19:43:46

Alexandr
19.03.2018
21:48:50
Привет ребят.
Подскажите пожалуйста,
есть 2 таблицы One to One:
1) User (id,name,etc)
2) Address (id, user_id)
Мне нужно подгрузить пользователей с их адресом, правильно ли я понимаю, что лениво их нельзя подгрузить?
из-за http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/limitations-and-known-issues.html#join-columns-with-non-primary-keys ?

Vladislav
19.03.2018
21:53:58
просто отрендери {user.address}
и все)
они как раз подгрузятся лениво

Alexandr
19.03.2018
21:55:51
я перебираю в логах вижу, что он создаёт select на каждый
У юзера поставил :@ORM\OneToOne(targetEntity="Address", mappedBy="user")
У адреса поставил: @ORM\OneToOne(targetEntity="User", mappedBy="address")

Google

Alexandr
19.03.2018
21:57:39
или требуется ещё что-то?

Vladislav
19.03.2018
21:58:47
юзни вот это
тебе не надо бидирекшинал
не думаю что ты из адреса будешь доставать пользователя когда-то
крч иди почитай bidirectional vs unidirectional
mappedBY vs inversedBy

Елнур
19.03.2018
21:59:56

Alexandr
19.03.2018
22:01:20
сейчас прочитаю и попробую, спасибо

Vladislav
19.03.2018
22:03:40

Vladislav
19.03.2018
22:03:46
и не будет никакого джоина

Alexandr
19.03.2018
22:03:50
* @ORM\OneToOne(targetEntity="Address")
* @ORM\JoinColumn(name="id", referencedColumnName="user_id")
Так нельзя же? Ключ же не primary?

Елнур
19.03.2018
22:04:38

Vladislav
19.03.2018
22:05:00
Note that the @JoinColumn is not really necessary in this example, as the defaults would be the same.

Елнур
19.03.2018
22:08:13
думаю, самый верный способ - создать кастомный query_builder в репозитории

Google

Alexandr
19.03.2018
22:10:25
эм, так я не понял. Попробовал как в доке, но тогда получаю экзепшен:
Entity of type 'AppBundle\Entity\Address' for IDs id(0) was not found
Каким путём мне идти?
создать qeurybuilder и явно join сделать ?

Vladislav
19.03.2018
22:11:52
это две задачи
сначала делаем первое и потом второе)

Alexandr
19.03.2018
22:13:00
я хочу получить список пользователей уже с адресами, так что бы на каждый адрес не создавался новый запрос

Vladislav
19.03.2018
22:14:08
тогда тебе надо запрос
$em->createQieryBuilder()->select('u', 'a')->from(User:class, 'u')
->leftJoin('u.address', 'a')

Admin
ERROR: S client not available

Alexandr
19.03.2018
22:17:04
А в енти указывать join?

Елнур
19.03.2018
22:17:41
по умолчанию там уже будет JoinColumn(name="address_id", referencedColumnName="id")

Alexandr
19.03.2018
22:23:03
У пользователя указал
/**
* @ORM\OneToOne(targetEntity="Address")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
и сделал leftjoin с u.address
но всё так же Entity of type 'AppBundle\Entity\Address' for IDs id(0) was not found
Что я сделал не правильно?

Елнур
19.03.2018
22:26:13

Alexandr
19.03.2018
22:28:07
Таблица пользователя вообще не имеет поля address, только адрес содержит id пользователя

Vladislav
19.03.2018
22:28:20
так и должно быть)

Alexandr
19.03.2018
22:29:15
Так одно лечим другое калечим
у меня до этого была ошибка с primary key

Google

Елнур
19.03.2018
22:30:03
я думаю, вам стоило бы сделать так: 1) User (id,name,addres_id, etc)
2) Address (id, etc)
поскольку, вы в основном будете доставать адреса со стороны пользователя, а не наоборот

Dinar
19.03.2018
22:31:22
А ещё можно embeddable. Если не предполагается несколько адресов.

Елнур
19.03.2018
22:31:28
или, у вас уже есть таблица с данными и хотите мэпить в доктрину?

Alexandr
19.03.2018
22:32:20
бд уже есть готовая, я не могу с ней ничего делать. Адрес в этой бд может быть только один единственный

Maxim
19.03.2018
22:33:14
я про это
Для начала по проектированию бд хотя б основы почитай чтоб вопросов с примари не было
Есть схема бд с этими двумя сущностями?
Посмотреть как связи осуществлены

Vlad
19.03.2018
22:34:24
Феч игер

Елнур
19.03.2018
22:34:41
@tabuna, а у Вас user_id в таблице адресов - уникальное поле?

Alexandr
19.03.2018
22:35:25
нет, не уникальное, всё должно быть обработано в ручную

Maxim
19.03.2018
22:36:18

Alexandr
19.03.2018
22:36:32
Начальство дало

Maxim
19.03.2018
22:36:41
Зачем идам вообще возможность редактирования иметь?

Елнур
19.03.2018
22:37:20
по факту, у вас в таблице физически могут быть несколько адресов у одного пользователя
тогда можно вот так сделать: User (id, name, addresses, etc), Address (id, user_id, etc)

Maxim
19.03.2018
22:38:27
Да блин, стойте

Alexandr
19.03.2018
22:39:33
@urazymbetov а разве это не добавит кучу неудобств связанный с тем, что всегда придётся брать первый элемент?