@symfony_ru

Страница 112 из 138
Serezha
27.03.2018
09:02:49
Vitalii
27.03.2018
10:00:26
Ребята, может кто подскажет библиотеку нормальную для импорта csv в бд

Serhii
27.03.2018
10:19:22
оО

а в чем собственно юзать дефолтную функцию гетцсв?

Google
Serhii
27.03.2018
10:20:14
разбить как надо и залить в бд

да из самого PMA допустим можно прям файл импортнуть

Vitalii
27.03.2018
10:36:15
Pma?

Serhii
27.03.2018
10:47:00
phpmyadmin

@sidorkevich_vitalii

Vitalii
27.03.2018
10:47:53
Понял. Но нужна таки автоматизация)

Serhii
27.03.2018
10:48:04
а в чем собственно юзать дефолтную функцию гетцсв?

разбить как надо и залить в бд

да из самого PMA допустим можно прям файл импортнуть

делов то 10 минут

форичем пройтись и закинуть че куда

Vitalii
27.03.2018
10:48:31
Функция getsv?

Serhii
27.03.2018
10:48:37
fgetcsv

Google
Serhii
27.03.2018
10:49:00
http://php.net/manual/en/function.fgetcsv.php

Vitalii
27.03.2018
10:50:39
Ну я уже импортнул в массив...но нужна же валидация там проверка какая-нибудь соответствует ли файл ...не внесли ручками данные

Фэйловые

Serhii
27.03.2018
10:55:43
ну так лол

только Брюс Всемогущий может знать, какая именно валидация тебе нужна

юзай трим, обрезай что тебе надо или проверяй

цсв как ты генеришь?

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

проверка на файл?

наппиши иф

получится что напишешь целый скриптец с обработками, валидацией

и импортом в бд

это же кастомная фигня

Vitalii
27.03.2018
13:29:12
цсв приходит извне

на файл проверил

осталось именно правильность записей в файле

есть массив...получается просто перебиратьего и в 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); }

Google
Vitalii
28.03.2018
08:01:57
это код метода

вставляется только с 21 строки

вот цсв



Елнур
28.03.2018
08:03:40
В каждом цикле вы должны создавать объект заново, или делать клон и очищать id

Vitalii
28.03.2018
08:04:19
объект понятно...а что значит делать клон и очищать id?

Елнур
28.03.2018
08:04:33
а вы создаете объект до цикла, и каждый раз сохраняете один и тот же объект

создавать объект, значит: $obj = new productdata; а клон: $obj = clone $obj;

Vitalii
28.03.2018
08:06:15
ага...спасибо

теперь понял

Елнур
28.03.2018
08:06:45
но при клонировании нужно сделать id = null внутри объекта

Vitalii
28.03.2018
08:07:34
интересно...так по идее сохранялась в бд только первая строка...а сохраняется 21

U_mulder
28.03.2018
08:08:27
потому что flush у вас в момент достижения batchsize

Елнур
28.03.2018
08:08:37
интересно...так по идее сохранялась в бд только первая строка...а сохраняется 21
правильно же, после каждого цикла заменяется новым значением.

U_mulder
28.03.2018
08:08:41
который видимо равен 20

Serezha
28.03.2018
08:10:11
Народ, посоветуйте по архитектуре. У меня есть много разных видов контента - новости, блог, статьи - все это отдельные Entity + Repository

Но я хочу хранить лайки для всех видов контента в одной обще табличке

Только не пойму, как замутить метод getLikes для конкретной сущности, получается нужно сделать виртуальное поле и что-то вроде DQL запроса из сущности ?

Елнур
28.03.2018
08:15:32
Народ, посоветуйте по архитектуре. У меня есть много разных видов контента - новости, блог, статьи - все это отдельные Entity + Repository
Вы можете создать отдельную таблицу для лайков, без жесткой привязки к виду контента (без foreign key и без релейшн в entity) например так: likes: id: int content_type: string content_id: int user_id: int created_at: datetime

Google
Serezha
28.03.2018
08:16:36
Vitalii
28.03.2018
08:17:20
@urazymbetov спасибо. Разобрался.

Елнур
28.03.2018
08:18:23
Я так и сделал. Я не пойму как вытащить из нее данные. У меня есть сущность News, но внутри сущности нет доступа к EntityManager
Не обязательно внутри сущности News вытаскивать лайки. Вы можете создать Query Builder в репозитории лайков, и вытаскивать оттуда

Serezha
28.03.2018
08:18:35
а где именно собираетесь получать лайки. В шаблоне Twig?
Отображать в шаблоне Твиг, а получать хотел в контроллере, вытащить из репозитория все новости и показать лайки через метод getLikes

Елнур
28.03.2018
08:19:58
да

Похоже только так. "Склеивать" новости и лайки отдельным методом из репозитория
что то вроде этого: 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
28.03.2018
10:09:49
Ребята

спасайте



вот у меня в таком куске вода, с помощью сонаты строятся таблицы

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

я не знаю как добавить колонки

Serezha
28.03.2018
10:11:17
из этого куска кода не могут строиться таблицы

Ivan
28.03.2018
10:11:38
это кусок конфига

хорошо, как мне добавить коллонки к моим таблицам?

Serezha
28.03.2018
10:12:29
к таблицам БД или Соната Админ?

Ivan
28.03.2018
10:12:48


вот тут, у меня в БД 5 колонок а выводит только нейм

Google
Ivan
28.03.2018
10:13:07
где это изменить?

Alexander
28.03.2018
10:13:42
в админ классе configureListFields

Serezha
28.03.2018
10:13:47
https://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/list_field_definition.html

Ivan
28.03.2018
10:13:55
спасибо огромное)

а есть возможность подтянуть поля с сущности?

Ivan
28.03.2018
10:31:54
я же не знаю как это делать)

erkash
28.03.2018
10:32:33
https://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/list_field_definition.html
вот тут же всё показано как это делается)

Ivan
28.03.2018
10:33:42


вот таким вот способом прописываются поля чтобы захардкодить и они будут для всех одинаковые, разве нет?

а у меня то поля разные для разных таблиц еще я не понимаю откуда PostAdmin и MediaAdmin взялись

erkash
28.03.2018
10:36:14
а у меня то поля разные для разных таблиц ну так вытаскивай свои поля)) в чем проблема то не пойму тебя

Ivan
28.03.2018
10:38:05
если в user поля задаются явно, а мне нужно его как-то вытягивать с сущностей protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('id') ->add('name', TextType::class); }

тыкните носом пожалуйста, какой кусок кода вытаскивает поля с сущностей сам, и к нужной таблице сам их подставляет

чтобы листмапер сам себе набирал нужные поля

erkash
28.03.2018
10:39:26
так стоп ?

у тебя сколько сущностей есть?

Ivan
28.03.2018
10:39:54
3

erkash
28.03.2018
10:40:02
какие именно?

Ivan
28.03.2018
10:40:07
user department organization

erkash
28.03.2018
10:40:21
у юзера какие поля есть?

Страница 112 из 138