Thawne
builders это моя таблица в БД
Vadim
Thawne
Аааа, вроде понял. Спасибо
Alex
Erbol
builders это то, что вы кидаете при рендеринге через view(‘your_template.html.twig’, [‘builders’ => $builders]) (поэтому это не таблица в бд, а данные, которые вы отдаете)
И как сказал @franzkafkiansky это инструкция просто перебирает переданный массив, на каждой итерации подставляя в builder элемент массива )
Thawne
Dmitriy
всем привет как правильно приготовить symfony serializer, чтобы зависмые сущности тоже сериализовывал, мне нужно сериализовать вот такой json:
{
"name": "listItems",
"items": [
{
"name": "1"
},
{
"name": "2"
},
{
"name": "3"
}
]
}
Dmitriy
есть Enity ListItems и Item, вызываю так:
deserialize($string,ListItems::class,'json')
Dmitriy
Поле items пустой массив в выхлопе
Dmitriy
добавил в ListItem вот такой метод:
public function setItems(array $items)
{
foreach ($items as $item) {
$this->items->add($item);
}
}
и заработало 😃
Yuri
Yuri
тип какой проставлен на items ?
Yuri
@var array|null ? или объект ?
Dmitriy
Yuri
ну хз. у меня так
class Order {
/
* @var ArrayCollecton|Product[]
*/
private $products;
/
* @param ArrayCollection|Product[] $products
*/
public function setProducts($products){
$this->products=$products;
}
}
Yuri
и все работает
Yuri
должно попадать в ObjectNormalizer при serialize|deserialize
Yuri
ток я еще проверку делаю в методе setProducts на дубли
примерно так
$criteria = Criteria::create()->where(Criteria::expr()->eq('product', trim($product->getProduct())));
/** @var Product $checkProduct */
$checkProduct = $this->products->matching($criteria)->first();
if($checkProducts){
обновление данных в существующих items
}else{
$this->products->add($product); // добавляем новый item
}
Yuri
в $product->getProduct() - артикул
Yuri
а ну и засетить связь нужно у $product
в foreach
$product->setOrder($this);
Alex
А зачем вы в сущности лезете в базу?
Yuri
не лезу. где я в бд лезу ?
Yuri
Criteria::create()->where(Criteria::expr()->eq('product', trim($product->getProduct()))); - это поиск по коллекции
Anonymous
а давайте банить за куски кода в чате а не на pastebin?
Yuri
😂👍 а давайте
Yuri
оскорбляет чтоли?
Anonymous
читать не возможно, а мешает и отбивает всякое желания помочь
Anonymous
правила хорошого тона слышал такую вещь?
Yuri
а ну да, слышал. по правилам хорошего тона - можно было просто сказать, - сделать замечание ) а ты банить сразу. ) фу таким быть .
и я не просил помощи, я поучавствовал в помощи.
Anonymous
я просто предложил
Anonymous
хахс
Aleksandr
Фу таким быть, код текстом кидать, вот если бы фотку скрина!
Aleksandr
Внутри doc
Katulos
Кирилл
Внутри doc
а док надо скачать с файлообменника конечно же
Aleksandr
Банить никого не будем, но все таки код лучше линками
Thawne
Всем привет, я хотел спросить. Как брать данные из разных таблиц? Я должен создать еще 1 Entity? или как?
Anonymous
У тебя две сущности связанные и данные о них в разных таблицах
Anonymous
Приведи пример, а то не понятно
Thawne
У меня пока 1 сущность, и бд, там 3 таблицы. builders buidings и buildings image, как вывести данные из этих таблиц. Еще таблицаb buildings связана с builders по Id
Alex
Alex
Смотрите, если они все связаны, то можно все вытащить через какую-нибудь сущность, НО это накладно столько обращений в бд, потому что вам возвращаются не объекты, а прокси и только обращение к конкретному свойству снова полезет в базу и тогда вытащит данные фактически, поэтому если вам нужны все эти данные сразу, лучше всего написать запрос в репозитории и вытащить все сразу в 1 запросе, тогда будет только 1 запрос
Alex
Если же они нужны не все, тогда просто вытаскивайте конкретную сущность, не делайте общий запрос, чтобы не тащить лишние зависимости
Yaro
Привет всем, кто то может посоветовать статью про правильный MVC в симфони. Я до этого на слиме пилил, и выносил ВСЮ бизнес логику в сервисы, контроллер отвечал только за то какой сервисс вызвать. Но судя с мануалов по симфони, и с видео уроков в симфони так не принято, тоесть в сервисы выносится glue code, между контроллером и орм. Хочу в этом розобратся до того как гавнокодит.
Alex
Привет всем, кто то может посоветовать статью про правильный MVC в симфони. Я до этого на слиме пилил, и выносил ВСЮ бизнес логику в сервисы, контроллер отвечал только за то какой сервисс вызвать. Но судя с мануалов по симфони, и с видео уроков в симфони так не принято, тоесть в сервисы выносится glue code, между контроллером и орм. Хочу в этом розобратся до того как гавнокодит.
“контроллер отвечал только за то какой сервисс вызвать.”  - примерно так и есть, но смотря про какую логику вы говорите. Каждый класс в системе работает со своими данными и выполняет какуют-то логику соответственно (сорри за тавтологию). Не используйте анемичные модели и следуйте принципу единой ответственности. Тогда сервис в вашем случае будет неким клеем, но не между орм и контроллером, а между разными объектами верхнего уровня. Также советую не работать с орм напрямую в сервисах, а создать репозитории для этого (свои для гибкой настройки)
Alex
https://elisdn.ru/blog/page-3 статьи, начиная с Проектирование сущностей предметной области и заканчивая Доменные сущности и Doctrine ORM, возможно ответят на все ваши вопросы
Yaro
Спасибо огромное за розвернутый ответ
Alex
Есть еще неплохая книга year with symfony, она есть на русском. Можно скачать беспалтно, тоже можно какие-то советы подсмотреть на досуге
Yaro
ооо это вообще найс
Руслан 🇲🇨
Alex
Ребята, что не так? Php 7.3
Alexander
symfony browser-kit с четвертой версии на symfony 3.4 не станет
Alex
Alexander
Если browser-kit есть на symfony 3.4 то в composer.json задать версию browser-kit которая станет на 3.4
Dmitriy
Сервис можно удалить как-то? устанавливается бандлом, но он мне не нужен
Alexey
полагаю, что если какой-то бандл добавил в зависимость, то он ему нужен
Dmitriy
мне не нужен доктриновский property_extractor
Dmitriy
как его отключить?
Alexey
composer remove symfony/property-info пробовали?
Dmitriy
крч, у меня на вход число в двух вариантах может прийти, int и string, я сериализую symfony serialazer компонентом, в чем суть:
прилететь таких свойств может в один объект много и почему-то PhpDocExtractor для последнего свойства тип не выдает и перекидывает на DoctrineExtractor
Проблемный метод:
/**
* @param int|string $sex
* @return AgeGroup
*/
public function setSex( $sex): self
{
$this->sex =(int) $sex;
return $this;
}
Dmitriy
Dmitriy
Может кто сталкивался с такой проблемой?
Alex
Может стоит попробовать использовать строгий тип?
Dmitriy
Alex
сделайте адаптер
Alex
Просто попробовать. У вас как я понимаю не определяется тип свойства
Alex
в целях теста
Alex
попробуйте сделать строгий тип для всех и проверить, потому что это странно
Alex
вы делаете каскад
Alex
но тип не определен
Dmitriy
Alex
а вы сериализуете весь объект?
Dmitriy
Alex
А можно примерный код?
Alex
Так, а у вас гетеры в классе возвращают числа?