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
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
Google
Serezha
28.03.2018
08:16:36
Елнур
28.03.2018
08:17:18
Vitalii
28.03.2018
08:17:20
@urazymbetov спасибо. Разобрался.
Елнур
28.03.2018
08:18:23
Serezha
28.03.2018
08:18:35
Елнур
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
спасибо огромное)
а есть возможность подтянуть поля с сущности?
erkash
28.03.2018
10:22:35
Ivan
28.03.2018
10:31:54
я же не знаю как это делать)
erkash
28.03.2018
10:32:33
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
у юзера какие поля есть?