• Система не видит php до этого все нормально работало?

    @gigisarri98
    composer install пишется в директории с файлом composer.json. Вы уверены, что Вы находитесь именно в этой директории?
  • Почему Laravel не подключается к БД во время тестирования?

    @gigisarri98 Автор вопроса
    Алексей Уколов, нет, не уверен абсолютно. Только дело в том, что я больше ничего не менял, особенно в каких-то тонких вещах, в которых я не разбираюсь.
    То, что ненормально - да, сам ума не приложу. Но конфликт явно с моделями и классами ларавел. Просмотрел всю историю коммитов и повспоминал прошлые проекты, наиболее возможным этапом, на котором я что-то мог сломать - это изменение базовой модели User на свою собственную. Только вот делал я это четко по гайду, да и все остальное почему-то не сломалось.

    Вот один из вопросов, в котором дали такое решение: https://stackoverflow.com/a/66204855
  • Почему Laravel не подключается к БД во время тестирования?

    @gigisarri98 Автор вопроса
    Алексей Уколов,
    Т.е. изначально вы наследовали от PHPUnit, а помогло наследование от стандартного TestCase, который наследуюется от Laravel.

    Нет. Я создаю тесты через артисан, и он создает класс теста, который наследуется от ларавелевского класса. И вот эта история не работала, а стоило поменять на стандартный PHPUnit - все класс.

    Я имею в в виду "решение с parent".

    Понял, спасибо. Честно, сам бы не додумался до такого решения и даже не понимаю, почему оно работает, раз вызывается метод PHPUnit, а не чего-нибудь ларавелевского...
  • Почему Laravel не подключается к БД во время тестирования?

    @gigisarri98 Автор вопроса
    Алексей Уколов, в смысле "наследоваться от классов фреймворка"? Я от них и наследовался, и как раз тесты из "ларавельной" коробки не хотят работать с БД - и такая проблема не только у меня одного, судя по тому, что я нашел решение с parent и заменой класса в интернете.

    вызывать инициализацию фреймворка
    Извините, что Вы имеете в виду?
  • Почему Laravel не подключается к БД во время тестирования?

    @gigisarri98 Автор вопроса
    Алексей Уколов, нет, ей Богу. Ничего кроме атрибута $fillable я не добавлял.
    Единственное, что может быть, это что я заменил стандартную модель User на свою (не User), но я все делал, что называется, по учебнику.
  • Почему Laravel не подключается к БД во время тестирования?

    @gigisarri98 Автор вопроса
    Как Вы думаете, в чем она может заключаться?
  • Как выполнить миграцию в контейнере Docker?

    @gigisarri98 Автор вопроса
    Вадим, да, в общем, если нужно кровь из носу в два контейнера запустить все это дело одной командой, подойдет php artisan serve после миграций. Большое спасибо за просвещение и ответы!
  • Как выполнить миграцию в контейнере Docker?

    @gigisarri98 Автор вопроса
    Вадим,
    это неплохо для Development, но для production тебе надо включить в контейнер nginx или apache

    Собственно, это учебный проект, так что...

    Поскольку ты используешь artisan, то тебе скорее всего нужно после миграции выполнять php artisan serve


    Большое спасибо, с утра обязательно попробую, выглядит очень многообещающе.

    https://www.atlantic.net/vps-hosting/how-to-deploy...


    Проще говоря, в два контейнера тут не решить эту проблему?

    Большое спасибо за ответы, я завтра попробую последний совет с артисаном и обязательно отпишусь и проставлю ответ правильным!
  • Как выполнить миграцию в контейнере Docker?

    @gigisarri98 Автор вопроса
    Вадим,

    И вообще мне кажется блок environment должен прописан в секции server:, а не в db

    Вероятно, я плохо настроил, но у меня в таком случае сама Mysql отпадает, потому что не может залогиниться.
    вручную попробуй зайти в контейнер и прописать команду php, поставь в run.sh sleep 1800 вместо последней команды

    Ничего не поменялось.
    За идею со sleep спасибо, я попробовал добавить его в начало shell скрипта и таки да, миграция выполнилась. Только вот окончание инструкций в этом файле означает для докера, что Entrypoint выполнился и теперь можно заканчивать. Так что тоже не катит.

    В общем, никакого варианта только через docker-compose up я не нашел.
    Самое короткое:
    docker-compose up и в новом окне терминала docker exec `docker ps -l -q` bash -c "php artisan migrate"
  • Как выполнить миграцию в контейнере Docker?

    @gigisarri98 Автор вопроса
    Привет!
    1.Пробовал по-всякому их тасовать - ничего. Более того, я скопировал часть композа из своего прошлого ларавел-проекта, который прекрасно работал, но без миграций (там просто вручную через дамп база ставилась). Да и ENV правильно прописываются, потому что к базе данных можно подключиться из контейнеров вручную + если завардампить в самой ларавеле суперглобальный массив со всеми ENV установками, то он их выдает абсолютно корректно и правильно.
    2.Вообще всё, что касается непосредственно выполнения чего-либо внутри контейнера, отлично работает.

    Я просто достаточно зеленый в докере (да и не только) и потому, скорее всего, не понимаю порядок выполнения сборки и запуска контейнеров и образов. Единственная мысль по этому поводу - файл run.sh (или, как я делал изначально, строчка RUN в Dockerfile) выполняется либо во время сборки образа, либо сразу перед запуском контейнера. Потому, возможно, ларавел и плюется, говоря, что в подключении к Mysql отказано.
  • Авторизация php?

    @gigisarri98
    А в чем ошибка-то?
  • Как передать имя класса в функцию?

    @gigisarri98
    Jokerrs567, поверьте, в этом нет ничего очень сложного, скорее наоборот. Уверен, в итоге у Вас все получится!
  • Как передать имя класса в функцию?

    @gigisarri98
    Jokerrs567, видел, что Вы вчера просили написать код. Я напишу то решение, которое использовал бы я и спрячу это под спойлер, мало ли Вы захотите дойти сами или, наоборот, найдёте решение лучше. В любом случае:
    spoiler

    Я все еще не могу заглянуть в Ваш код целиком, более того, я не работал с WooCommerce, потому не знаю, как именно представлены данные в объект, который вы перебираете.

    Давайте допустим, что в $cart_object->cart_contents хранится ассоциативный массив, по типу "current_league" => "Алмаз", данные в котором предоставлены в той же последовательности, что и в вашем скриншоте. Соответственно, каждая новая итерация цикла foreach будет соответствовать строчке из вашего скриншота. Но проблема в том, что Вам нужно заменить английские ключи на русские.

    То есть сейчас примерно $cart_object->cart_contents будет выглядеть как-то так: ["current_league" => "Алмаз", "current_division" => "IV", "desired_league" => "Алмаз" ......].

    Ваша задача: поменять условный "current_league" на "Текущая лига". Сделать это можно с помощью функции array_combine($array_of_keys, $array_of_values), где первым параметром Вам нужно сделать массив с русскими названиями (если у Вас его нигде нет), а вторым - $cart_object->cart_contents.
    Суть абсолютно та же, что была в моем коде выше, представим, что получившийся массив называется $content:

    <?php foreach ($content as $key => $value): ?>
        <div class="fields">
         <span><?php echo "$key: "; ?></span><span><?= $value ?></span>
        </div>
    <?php endforeach; ?>

  • Как передать имя класса в функцию?

    @gigisarri98
    no_one_safe,
    Спасибо за замечание, исправил.
    Но и JS-класс тоже не имеет отношения)

    Jokerrs567,
    Сформулируйте, пожалуйста, максимально конкретно, что Вы хотите сделать.
  • Почему моя быстрая сортировка работает неочевидно?

    @gigisarri98 Автор вопроса
    Igor Borisov, зачем же вы тогда пишите и даёте советы, если сами не разбираетесь?
  • Почему моя быстрая сортировка работает неочевидно?

    @gigisarri98 Автор вопроса
    Igor Borisov, пожалуйста, если Вы знаете ответ, напишите его, я не могу понять Ваших намёков, потому что я всего-лишь новичок.
  • Почему моя быстрая сортировка работает неочевидно?

    @gigisarri98 Автор вопроса
    Igor Borisov,
    языки отличаются не только синтаксисом (неожиданно). Особенностей больше, чем вы ожидаете. А то так бы все трансляторы понаписали из Python в PHP и учили бы один язык вместо кучи других.
    Понимаю о чем Вы, замечание уместно, спасибо. Но предоставленные Вами ссылки (как минимум две последние) делают то же самое, что и мой код.
    Идея о том, что цикл начинается с единицы, как раз и взята с этих ссылок. Более того, наш код получился чуть ли не идентичным.

    Потому проблема остается: если опорный элемент - нулевой элемент массива, то всё ок, иначе - все ломается.
    Я заменил рандомайзер на средний элемент массива, результат - в комментарии под первым ответом.

    В последней ссылке есть комментарий над строкой с началом цикла:
    // Сравнить среднее значение массива, обратить внимание на значение $ i, начиная с 1 (или $ i = 0; $ i <$ count-1)

    Я сделал аналогично (к слову, не понимая, какой смысл в этой манипуляции, и получил такой вывод:

    array (size=6)
    0 => int 2
    1 => int 4
    2 => int 5
    3 => int 5
    4 => int 5
    5 => int 6
  • Почему моя быстрая сортировка работает неочевидно?

    @gigisarri98 Автор вопроса
    Спасибо за наводку.
    Смотрите, беру не rand(), а элемент посередине:
    Допустим, я поменял исходный массив на этот: [2,4,6,5,1,3].
    И меняю эту строчку на следующую, делая опорным элемент посередине:
    $elem = [$array[round(count($array) / 2)]];
    Вывод следующий:

    array (size=6)
    0 => int 1
    1 => int 1
    2 => int 3
    3 => int 3
    4 => int 5
    5 => int 6

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