🤫
Функция getsv?
Serhii
fgetcsv
Serhii
http://php.net/manual/en/function.fgetcsv.php
🤫
Ну я уже импортнул в массив...но нужна же валидация там проверка какая-нибудь соответствует ли файл ...не внесли ручками данные
🤫
Фэйловые
Serhii
ну так лол
Serhii
только Брюс Всемогущий может знать, какая именно валидация тебе нужна
Serhii
юзай трим, обрезай что тебе надо или проверяй
Serhii
цсв как ты генеришь?
Serhii
явно кто-то руками записывает при любых или скрипт написан который тянет данные с бд с другой системы
Serhii
проверка на файл?
Serhii
наппиши иф
Serhii
получится что напишешь целый скриптец с обработками, валидацией
Serhii
и импортом в бд
Serhii
это же кастомная фигня
🤫
цсв приходит извне
🤫
на файл проверил
🤫
осталось именно правильность записей в файле
🤫
есть массив...получается просто перебиратьего и в foreach пихать...только так
🤫
и каждое значение проверять
🤫
по другому так понимаю никак
🤫
привет всем. нужна помощь...не могу понять почему вставляется только 1 строка в бд. $folder = $this->getContainer()->getParameter('kernel.root_dir').'/../data/'; $obj = new Tblproductdata(); if (($handle = fopen($folder.$this->file, "r")) !== FALSE) { $row = 0; while (($dataBlocks[] = fgetcsv($handle, 1000, ",")) !== FALSE) { } $count = count($dataBlocks); foreach ($dataBlocks as $i => $dataBlock) { if (0 == $i) continue; if ($count == $i) continue; $obj->setStrProductName($dataBlock[1]); $obj->setStrProductDesc($dataBlock[2]); $obj->setStrProductCode($dataBlock[0]); $obj->setDtMadded(); $obj->setStock('dfs');//$dataBlock[3]); $obj->setCost(12);//$dataBlock[4]); $obj->setDtmDiscontinued(); $obj->setStmTimestamp(); $this->em->persist($obj); if (0 === ($i % self::BATCH_SIZE)) { $this->em->flush(); $this->em->clear(); } } ; } fclose($handle); }
🤫
это код метода
🤫
вставляется только с 21 строки
🤫
вот цсв
🤫
Елнур
В каждом цикле вы должны создавать объект заново, или делать клон и очищать id
🤫
объект понятно...а что значит делать клон и очищать id?
Елнур
а вы создаете объект до цикла, и каждый раз сохраняете один и тот же объект
Елнур
создавать объект, значит: $obj = new productdata; а клон: $obj = clone $obj;
Елнур
🤫
ага...спасибо
🤫
теперь понял
Елнур
но при клонировании нужно сделать id = null внутри объекта
🤫
интересно...так по идее сохранялась в бд только первая строка...а сохраняется 21
Кирилл
потому что flush у вас в момент достижения batchsize
Елнур
интересно...так по идее сохранялась в бд только первая строка...а сохраняется 21
правильно же, после каждого цикла заменяется новым значением.
Кирилл
который видимо равен 20
Serezha
Народ, посоветуйте по архитектуре. У меня есть много разных видов контента - новости, блог, статьи - все это отдельные Entity + Repository
Serezha
Но я хочу хранить лайки для всех видов контента в одной обще табличке
Serezha
Только не пойму, как замутить метод getLikes для конкретной сущности, получается нужно сделать виртуальное поле и что-то вроде DQL запроса из сущности ?
Елнур
Народ, посоветуйте по архитектуре. У меня есть много разных видов контента - новости, блог, статьи - все это отдельные Entity + Repository
Вы можете создать отдельную таблицу для лайков, без жесткой привязки к виду контента (без foreign key и без релейшн в entity) например так: likes: id: int content_type: string content_id: int user_id: int created_at: datetime
Serezha
🤫
@urazymbetov спасибо. Разобрался.
Елнур
Я так и сделал. Я не пойму как вытащить из нее данные. У меня есть сущность News, но внутри сущности нет доступа к EntityManager
Не обязательно внутри сущности News вытаскивать лайки. Вы можете создать Query Builder в репозитории лайков, и вытаскивать оттуда
Serezha
а где именно собираетесь получать лайки. В шаблоне Twig?
Отображать в шаблоне Твиг, а получать хотел в контроллере, вытащить из репозитория все новости и показать лайки через метод getLikes
Serezha
Не обязательно внутри сущности News вытаскивать лайки. Вы можете создать Query Builder в репозитории лайков, и вытаскивать оттуда
Похоже только так. "Склеивать" новости и лайки отдельным методом из репозитория
Елнур
да
Елнур
Похоже только так. "Склеивать" новости и лайки отдельным методом из репозитория
что то вроде этого: public function getLikes($contentType, $contentId) { $this->createQueryBuilder('l') ->andWhere('l.content_type = :content_type') ->setParameter('content_type', $contentType) ->andWhere('l.content_id = :content_id') ->setParameter('content_id', $contentId) ->orderBy('l.createdAt', 'DESC') } и в контроллере: $this->getDoctrine()->getManager()->getRepository('Likes')->getLikes('news', $news->getId());
Ivan
Ребята
Ivan
спасайте
Ivan
Ivan
вот у меня в таком куске вода, с помощью сонаты строятся таблицы
Ivan
записи в которых я могу редактировать, удалять и добавлять, но вот проблема, оно везде строится по полю name
Ivan
я не знаю как добавить колонки
Serezha
из этого куска кода не могут строиться таблицы
Ivan
это кусок конфига
Ivan
хорошо, как мне добавить коллонки к моим таблицам?
Serezha
к таблицам БД или Соната Админ?
Ivan
Ivan
вот тут, у меня в БД 5 колонок а выводит только нейм
Ivan
где это изменить?
Alexander
в админ классе configureListFields
Serezha
https://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/list_field_definition.html
Ivan
спасибо огромное)
Ivan
а есть возможность подтянуть поля с сущности?
Ivan
я же не знаю как это делать)
erkash
https://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/list_field_definition.html
вот тут же всё показано как это делается)
Ivan
Ivan
вот таким вот способом прописываются поля чтобы захардкодить и они будут для всех одинаковые, разве нет?
Ivan
а у меня то поля разные для разных таблиц еще я не понимаю откуда PostAdmin и MediaAdmin взялись
erkash
а у меня то поля разные для разных таблиц ну так вытаскивай свои поля)) в чем проблема то не пойму тебя
Ivan
если в user поля задаются явно, а мне нужно его как-то вытягивать с сущностей protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('id') ->add('name', TextType::class); }
Ivan
тыкните носом пожалуйста, какой кусок кода вытаскивает поля с сущностей сам, и к нужной таблице сам их подставляет
Ivan
чтобы листмапер сам себе набирал нужные поля
erkash
так стоп 🛑
erkash
у тебя сколько сущностей есть?
Ivan
3