• Как исправить ошибку "app.js:11 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'dispatch')"?

    @Hfnas Автор вопроса
    /popup/app.js
    import { createApp } from 'vue';
    import App from './App';
    import store from './store'
    
    const popup =createApp(App).use(store).mount('#modal');
    
    window.popup = {};
    window.popup.showModal =
        (banner) =>popup.$store.dispatch('modal/showModal',"data");


    Cпасибо,а почемку тогда
    в одну строчку
    const show=createApp(App).use(store).use(VueNumberFormat, {prefix: '', suffix:  window.staticStore.currency , decimal: '.',  thousand: ' ', precision: 1});
    ,
    не работает, а так работает.... Поэтомув я так и сделала ранее(см мой вопрос)
    import { createApp } from 'vue';
    import App from './App';
    import store from "./store";
    import VueNumberFormat from 'vue-number-format'
    
    const show=createApp(App);
    show.use(store);
    show.use(VueNumberFormat, {prefix: '', suffix:  window.staticStore.currency , decimal: '.',  thousand: ' ', precision: 1});
    show.mount('#app');
  • Как создать сущность с нужными полями через команду или код?

    @Hfnas Автор вопроса
    Класс финальный, его можно скопировать в свое просстранство имен и работаить.
  • Как настроить роутинг в контроллере и твиге?

    @Hfnas Автор вопроса
    BoShurik, все равно перенаправляет на каталог.
  • Как настроить роутинг в контроллере и твиге?

    @Hfnas Автор вопроса
    Hfnas, BoShurik, большое спасибо, спрошу, наверное, нет нельзя. Похоже разный path в twig ничего не даст, раз урлы почты одинаков.
  • Как настроить роутинг в контроллере и твиге?

    @Hfnas Автор вопроса
    sl0, требование сеошника.
  • Как настроить роутинг в контроллере и твиге?

    @Hfnas Автор вопроса
    но мне такой урл нужен, категория/подкатегория, категория/подкатегория.подкатегория/товар..... Искала , может .htaccess решает?
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    tukreb, Спасибо, Добрый Человек!!! Вы меня спасли, не знаете как!!! Извините, за долгий ответ, приболела я. Да, причина, в этом. Быстро летает.
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    tukreb, Благодарю за внимание,!!!!
    Если у вас правильно описаны сущности, доктрина не тянет все сущности за раз, а только тогда, когда идёт обращение.
    Чтобы "твиг" не делал миллион запросов к бд, пишут ручные запросы, без использования доктрины.

    Теперь поняла. Спасибо ОГРОМНЕЙШЕЕ. Просто удивилась, что в профайлере симфони появились доп запросы, которые я не делала....
    По коду, я могу предположить, что вы можете делать 2440 встакок кода, вместо одной большой.
    А если у вас это вставляется всё же одним запросом, то возможно стоит разбить это допустим пачками по 100-200 строк.
    В общем не понятно как у вас реализовано.

    Да, верно: Делается циклом по 24 записи всего шагов 120- Итого 2440вставок/обновлении (вариант 1 или вариант2)
    Одним запросом заполнить всю таблицу невозможно, так как каждый шаг рассчитывается на основе предыдущего. Буду делать второй вариант, раз он быстрее. Потому, что как иначе, я не знаю. Расчеты на основе предыдущего шага быстрые, проблема была в сохранении сущности, почему именно сохранение сущности тормозит, я не знаю.
    public function setCreate($entityMS)
        {
            $this->entityManager->persist($entityMS);
            $this->entityManager->flush();
        }
    
        public function setSave()
        {
            $this->entityManager->flush();
        }

    когда идёт обращение

    имеется ввиду второй способ, спасибо. Просто не знаю, что такое "обращение".
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Большое спасибо Вам за ценный совет!!!!
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    2. То что редактируем или добавляем, через доктрину.
    https://github.com/ElisDN/demo-project-manager/blo...

    Это нужно для того, чтобы твиг не запрашивал дополнительно выводимое поле "один ко многим"?
    Например, вывожу список пользователей(`users(id name address_id)`), у которых есть подсущность адресс(Таблица `address (id name )` подсоединена к `user`, как один к многим)). Для вывода в twig адреса, делается дополнительный запрос в бд(select * from address where id=1). Поэтому, правильнее сделать изначально выборку нужных полей
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    спасибо за внимание!
    что показывает symfony debug?

    про это не знаю, пользуюсь дебагом от php. Придется изучить. Поэтому не скажу совсем. За подсказку спасибо,изучить инструмент надо будет.
    там же если память не изменяет в последних версиях симфони можно посмотреть и статистику выполнение запросов.
    - про это тоже не скажу. Эти операции вставки-обновления делает команда, заданная в консоли. Как отследить тоже не знаю( я обернула строчки в тайминг, чтобы вычислить, сколько что работает)
    Но хочу сказать , с каждой итерацией растет сохранение сущности в бд.(1 способ? yначиная с середины сохранение сущности занимает 2сек)
    А какие красивые решения, мне главное, заполнить таблицу по формулам на основе 3х таблиц. Выборки быстрые. а вот вставка/обновление через сущность (1способ) 2440 строчек занимает 3мин,
    а второй способ 3 сек. (во втором способе придется делать создание через сущность, так как мы не можем делать createBuilder()->insert())

    Возможно, проблема в том, что придется сохранять поле (многое к одному.) Как я поняла Вас, правильнее делать сохранение в бд через сущность(те первым способом).
  • Вопросы по теории symfony?

    @Hfnas Автор вопроса
    tukreb, 2440 строк заполняет за 3 мин
    $productBD = $this->getOne($id);
                $flagCreate = false;
                if ($productBD == null) {
                    $productBD = new Modeling();
                    $productBD->setId($id);
                    $flagCreate = true;
                }
    
                $productBD->setProduct($product->getProduct());
                $productBD->setDateModeling($dateObj);
    ....
    
    
                if ($flagCreate)
                    $this->setCreate($productBD);
                else
                    $this->setSave();


    2440 строк заполняет за 30сек
    $this->createQueryBuilder("m")
                    ->update()
                    ->set('m.product',':product')
                    ->set('m.dateModeling',':dateModeling')
                    ....
                    ->where("m.id=:id")
    
                    ->setParameter('product',$productsEntity->getGuid())
                    ->setParameter('dateModeling',$dateObj->format("Y-m-d"))
                 ....
    
                    ->setParameter('id', $id)
                    ->getQuery()
                    ->execute();
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Rsa97, Ух-ты, класс надо попробовать перевести все в бинарное представление. Спасибо большое!
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Михаил, благодарю за ваше внимание!
    1 вопрос отпал. Спасибо Вам большое! Просто в книге https://www.oreilly.com/library/view/high-performa... , правда 2 издания указано, что гуиды нежелательно использовать в качестве первичного ключа, из-за трудности вставки (индекс изначально отсортирован), то есть при каждом добавлении приходится перестраивать индекс.

    Даже, если я добавлю первичный ключ интом, мне придется добавить индекс уже по полю гуид(добавление индекса тоже влияет на вставку записи в бд). Итог, что лучше 2 индекса уникальных или один? Конечно, один. Спасибо Вам большое! А что скажете по поводу бинарного представления uuid? правда, придется при вставке гуида переводить в бинарное представление, затраты на такую операцию окупаются? Да, не спорю, при селекте будет отлично выбираться. Спасибо Rsa97 за мысль перевода гуидов в бинарное представление.

    2) Я часто делаю сортировку и группировку по нескольким полям из разных таблиц (минимум из трех), запрос пока вроде быстро идет(делаю EXPLAIN ANALYZE, смотрю на (actual time=0.160..0.163 ), но мне не нравится filesort (если делаешь explain)., в тоже числе по агрегирующим функциям , такими как сумма
    Мы же должны избавиться от запросов типа where, all, memory, filesort,
    Самый лучший запрос, наверное то, который использует индекс. Поэтому я добавляю из других таблиц поля в одну, чтобы по нему добавить индекс(2 поля из одной таблицы, одно поле из другой таблицы). Но, стоимость вставки не оправдана, если делать вставку записи через сущность. Поэтому у меня возник таколй вопрос. В доках написано индекс нужен для полей where, order by, group by. Может, я что-то не уловила, подскажите, пожалуйста, что поискать.

    и еще у меня есть на сайте функция сортировка по каждому столбцу, естественно по каждому полю я не добавляю индекс, так как это затратно при вставке записи. Правда, не знаю, верный у меня подход? Но , бд будет расти постоянно.

    Например, есть таблицы `products`, `products_group` . Для таблицы `products` указан столбец количество на складе. Далее для таблицы `products_group` нужно указать количество товаров по группам, в этом случае делают денормализацию?
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Rsa97, спасибо БОЛЬШОЕ за подсказку. То есть можно не добавлять ид в каестве первичного ключа, а гуид перенести в поле "внешний код", и тоже на него индекс. С другой стороны судя по скудной инфе, которую я прочитала, что простые ид плохи при реплике.
    Повторюсь, у меня скудная инфа, и знании не хватает. В любом случае спасибо за подсказку.
    Я все время импортирую с 1с, не подскажете затраты на перевод гуида в бинарное представление какие будут?
    Выбор таких гуидов, не спорю, будет быстро.
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Алексей Уколов, спасибо, его и читала, только 2 издание. может, стоит посмотреть поздние издания?
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    Akina,
    "долгая вставка индекса первичного ключа" - это как бы сказки. Или, если на самом деле тормозит - то весьма вряд ли по вине MySQL, там же посредников не счесть
    .
    Тормоза нет, просто уточняю . я прочитала об этом в книге https://www.oreilly.com/library/view/high-performa... , что гуид нежелательно делать, а нужно ид(автоинкремен -целое число). А исходя с Ваших слов ,то есть можно гуид сделать первичным ключом в моем случае, если импортируешь с 1с.
    или же нужно сделать в качестве первичного ключа автоинкремен целое число?
    Сортировка и группировка выполняется не по таблицам, а по выражениям. Но это к слову.

    В этом случае мы делаем денормализацию, и добавляем столбцы из других таблиц в одну таблицу. Верно?
    "сортируемые и группируемые поля добавить в самый конец индекса" ?? Какого индекса-то? не говоря уж о том, что индексов по выражениям, включающим поля нескольких таблиц - не существует. Не только в MySQL - вообще в любой СУБД.

    я знаю, поэтому нужно из другой таблицы столбцы добавить в нужную таблицу, чтобы создать индекс. В этом случае мы делаем денормализацию, и добавляем столбцы из других таблиц в одну таблицу.
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    ThunderCat, Доброго Вам вечера!
    Вот такое большущее СПАСИБО Вам за столь подробный ответ!!!!

    Естественно это настройки сервера, в частности выделение памяти под временные таблицы, чтобы их тип был инмемори, а не диск. Нужен баланс между доступной памятью и выделенной под оптимизацию запросов в памяти. Кэш запросов, индексов, временные таблицы - все это желательно поместить в память.


    Буду гуглить "Кэш запросов, индексов, временные таблицы , чтобы в память поставить."
  • Вопросы по теории mysql?

    @Hfnas Автор вопроса
    ThunderCat, большое спасибо за развернутый и подробный ответ от Души!!!
    Можно уточнить некоторые нюансы?

    Составной индекс если будут использоваться много полей, и отдельные если каждое из полей будет одиночной сортировкой.


    Посмотрев ролики в ютуб про индексы, говорят, что если таблица небольшая, то индексы лучше не создавать. Вопрос, что понимается под небольшой таблицей? Ну в моем случае таблицы будут расти.

    Или если у меня веб-странице есть таблица Users, при клике на заголовок которой меняется сортировка по убыванию/возрастанию, то нужно создавать индекс на каждый столбец данной таблицы?

    Аналогично, создать индекс на поле присоединяемой таблицы посредством джойна? (Например, у меня таблица Users(поля сущности:"ид", "логин", "пароль", "адрес"(ид на таблицу Address, foreign key)),есть сущность Address(поля: ид, наименование), присоединена к сущности Users как OnyToMany. Естествеено, если я вывожу таблицу пользователи("логин", "наименование адреса") на веб-странице, я добавляю индекс и на поле "Наименование" сущности Address). Повторюсь, мне нужно отсортировать "Логин" , "Наименование адреса" на веб-странице.

    Просто я вычитала в доках, что сортировка -делает временную таблицу. А я постоянно применяю сортировку в своем проекте, в тч и для расчета статистистики, и чаще всего в join-таблицах (как в случае адреса в таблице пользователи). И поэтому, правильный путь, это создать индексы на поля, которые нужно отсортировать, в тч и в join таблицах? explain показывает Using filesort, Using temporary , что очень плохо. Наверное, нужно сделать так, чтобы не показывал, добавлением индексов, верно?

    Например на сайте новостей 1 секунда это много, а на приложении с миллиардами записей статистики по мировым продажам жвачки в розницу для планирования расширения сети продаж с 30 объединениями/группировками/дистинкт выборками надцать секунд или даже минут это норм, так как задача другая совершенно.


    спасибо! За подробный ответ.

    а explain подскажет где можно подкрутить что-то на уровне индексов/памяти, код при этом вообще не трогается. Да и по большому счету 99% типовых задач не пишутся руками, а пускаются через модель/орм.



    у меня страница не превышает в запросах более 1с, но, если посмотреть профайлер симфони,explain, то я вижe что type=ALL , значит, запросы нужно оптимизировать: добавить индексы. По поводу памяти, в первые слышу, в роликах на ютубе про индексы про память не говорилось, может, быть вы имели ввиду править конфиг mysql? Пожалуйста, подскажите, в каком направлении копать, по "память"? Что погуглить?

    Если вам нужен именно конкретный запрос с конкретным набором выходных данных, менять вы его не будете, логично что крутить вы можете только структуры данных и индексы, ну может еще что-то в настройках самого сервера.


    Правильно ли я понимаю, если индексы не спасают проблему(долго выполняются), нужно настраивать сервер?