Задать вопрос
  • Вывод из бд данных и присваивание им значение?

    slo_nik
    @slo_nik Куратор тега PHP
    Вечер добрый.

    Задание есть, выполняйте. Проблема то в чём?
  • Как настроить регистрацию?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.

    подскажите пожалуйста что нужно сделать


    Нужно разбираться в коде, смотреть логи, дебажить код... Ну и так далее...
  • Как убрать редирект на страницу «спасибо» на сайте wordpress?

    slo_nik
    @slo_nik
    Добрый день.

    Это где-то в настройках WP, или сделано кодом ?


    Это или в настройках или сделано кодом. Не видя внутренностей сайта невозможно ответить на этот вопрос.

    Наймите человека, который разбирается в этом и он сделает.
  • Как правильно обработать товары в очереди?

    slo_nik
    @slo_nik Автор вопроса
    Когда начинается импорт или обновление товаров, то все товары сразу, ассоциативным массивом закидываются в очередь. И уже в очереди, в цикле, идёт проверка, есть такой товар в базе - обновляем, нет такого товара в базе - записываем новый. Если в этом случае произошёл сбой соединения, или ещё что-то похожее, то при сохраняемой очереди, когда возобновится работа, все товары начнут обрабатываться с самого начала?
  • Как правильно обработать товары в очереди?

    slo_nik
    @slo_nik Автор вопроса
    Добрый день.
    В том-то и дело, что файл читается целиком.
    При первом импорте, когда пользователь первый раз импортирует товар, особых проверок на дубли, я думаю, не нужно.
    А вот при обновлении по cron-y скорей всего.
    Ну и при обновлении по расписанию, когда раз в сутки, например, может быть добавлено несколько файлов в очередь. Пока прочитается один, остальные висят и ждут своей очереди. Думаю, что надо читать файл поштучно, каждый товар, и раскидывать это по нескольким очередям. Или я ошибаюсь?
    Вообще то странно там логика построена, на мой взгляд.
  • Как передать данные отправителя при отправке формы?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Или делайте композитную форму, или в форме создайте поля для обеих моделей и отправляйте.
  • Как правильно обработать товары в очереди?

    slo_nik
    @slo_nik Автор вопроса
    сами изображения отправляются или что-то другое?


    Отправляются url на изображения. Сначала скачиваются/записываются на диск и обрабатываются, сжатие, создание превью.

    Нет, очередь нужна для обработки без ожидания. А для хранения используется СУБД


    Товары, естественно, хранятся в базе, но никакой информации об периоде обновления у товара нет. Все условия для обновления хранятся в отдельной таблице. Запись туда происходит при первом импорте.
    Записывается url, по которому расположен yml файл, частота обновления, например раз в сутки и какие поля у товара надо обновить (цена, количество...)
    По cron-y проверяется, какие файлы надо скачать и обновить товары. Допустим, что надо будет скачать десять файлов и сравнить товары в базе. Получается, что все эти файлы будут отправлены в одну очередь. И пока не будут проверены все товары с одного файла остальные файлы будут ждать своей очереди.
    Всё это происходит как-то медленно.
    Берётся файл yml, перегоняется в ассоциативный массив. Потом этот массив читается в цикле. При каждой итерации идёт обращение к базе, проверяется, есть такой товар - обновляем, нет такого товара - пишем в базу новый. И остальные файлы не будут обработаны, пока не закончится обработка предыдущего файла.
  • Как правильно обработать товары в очереди?

    slo_nik
    @slo_nik Автор вопроса
    Изя Рабинович, причин много, что заставило отказаться от пакета для yii2, да и от самого framework-a для данной задачи.

    У Вас есть что-то, что могло ответить на мои вопросы?
  • Как найти в таблице 2 одинаковые записи в промежуточной таблице. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, в модели есть old_attributes, или как-то так называются, не помню.
    Берёте их, берёте новые атрибуты и сравниваете два массива, например через array_diff.
    Что получили при сравнении, то и обновляете.
  • Возможно ли в yii2 настроить ЧПУ с GET параметрами в виде массива?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Да, можно так сделать.

    Смотрите по ссылкам, сам решал подобный вопрос.

    https://qna.habr.com/q/510129

    https://yiiframework.ru/forum/viewtopic.php?t=46770
    https://yiiframework.ru/forum/viewtopic.php?p=2353...
  • Ошибка при выводе многомерного массива в цикле. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, дерево построилось, но код неверен, половина того, что сейчас в действии не должно быть в контроллере. Всё надо одним запросом делать, а сейчас у Вас костыльный костыль. И что-то не вижу валидации данных.
    Смотрите видео, которое я указал, читайте блог автора видео, там много полезного по yii2.

    По поводу undefined переменной ничего не могу сказать, по идее должна работать нормально. Можно прописать doc-block для переменной, инициализировать её в view.
  • Как исключить старые таблицы?

    slo_nik
    @slo_nik Автор вопроса
    Максим Федоров, я про pattern не из примера, а про свой pattern, который чуть поменял)
    Или я что-то не понял)
  • Как исключить старые таблицы?

    slo_nik
    @slo_nik Автор вопроса
    Всё получилось, благодарю. Только чуть pattern поменял и всё заработало.
    Зря, конечно кипиш поднял)))
    Работает и с кодом по второй ссылке и в консоли. Но передавал команду не совсем корректно. Запускаю я через composer, а там же надо перед командой ставить два дефиса и тогда всё заработает)))
    Эти два дефиса меня и сбили с толку)
  • Ошибка при выводе многомерного массива в цикле. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, проще xdebug поставить и смотреть в нём, что и в какой переменной находится без всяких print_r() )))

    Что у Вас в $orderStatuses->group?

    print_r($orderStatuses->group)

    Если группы, то так

    foreach ($orderStatuses->group as $name) {
          foreach () {
              // здесь из массива получаете статусы для группы, если они есть в ответе базы
          }
    }


    Если использовать print_r(), то делайте это пошагово

    $orderStatuses = ShopOrdersStatuses::find()->all();
    $statusList = [];
    
    print_r($orderStatuses); exit(); // Если есть нужные данные, то комментируем этот код и идём дальше. Если нет - меняем запрос.
    
    foreach ($orderStatuses as $orderStatus) {
    //print_r($orderStatus); exit(); // Если есть нужные данные, то комментируем этот код и идём дальше. Если нет - меняем запрос.
       $statusList[$orderStatus->group->name][$orderStatus->id] = $orderStatus->name ;
    }


    Ну вот как-то так.
  • Ошибка при выводе многомерного массива в цикле. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, если у Вас в ответе все нужные данные, то попробуйте вложенный цикл. Обходите сначала группы, и для каждой группы делайте цикл для статусов
  • Ошибка при выводе многомерного массива в цикле. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, тогда такой вариант

    foreach ($orderStatuses as $orderStatus) {
       $statusList[$orderStatuses->group->name][$orderStatus->id] = $orderStatus->name ;
    }


    $orderStatuses->group->name
  • Как исключить старые таблицы?

    slo_nik
    @slo_nik Автор вопроса
    С этим выражением все таблицы с префиксом t_ будут игнорироваться инструментом схемы.

    У старых таблиц нет никакого префикса. Значит мне надо будет указать, что новые таблицы с префиксом "amqp_" считать, остальные пропускать?
  • Как исключить старые таблицы?

    slo_nik
    @slo_nik Автор вопроса
    у вас корректный способ указан. Видимо дело в кеше или чем-то таком


    И с очисткой кэша и без результат один - пытается удалить старые таблицы.
    Старые таблицы не являются entity, обычный ActiveRecord.
  • Как исключить старые таблицы?

    slo_nik
    @slo_nik Автор вопроса
    Да, пробовал не только способ указать в консоли, какие таблицы фильтровать.

    Ещё делал такую штуку

    class FilterCustomTablesSubscriber implements EventSubscriber
    {
        public const TMP_TABLE_NAME = 'articles';
    
        public function getSubscribedEvents(): array
        {
            return [
                ToolEvents::postGenerateSchema => 'postGenerateSchema',
            ];
        }
    
        public function postGenerateSchema(GenerateSchemaEventArgs $args): void
        {
            $schema = $args->getSchema();
    
            //print_r($schema->getTables());
    
            // remove temporary table from schema before creating the tables
            try {
                $schema->dropTable(self::TMP_TABLE_NAME);
            } catch (SchemaException $e) {
                echo 'table not found';
            }
        }
    }


    Пытался отфильтровать хотя бы часть таблиц, в названии которых есть "articles". Тоже не помогло. Может что-то не так сделал.
    Можно ли таким способом фильтровать?
  • Ошибка при выводе многомерного массива в цикле. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    MaikMain, ну а Вы смотрели, что приходит в $orderStatuses?
    Есть там group->name?

    Его там, скорей всего, нет. Значит надо изменить сам запрос.

    with() это один из вариантов.

    Вот видео, где рассказывается, как работать со связанными данными.

    В документации, ссылку я давал выше, говорится ещё и о joinWith() и т.п.