• Как сделать так, чтобы в консоли метод setInterval писал текст не через секунду, а через 5?

    @myLizzarD
    PHP developer
    вместо counter++; сделать counter += 5;

    либо
    var counter = 1;
    var periodSec = 5,
          periodMsec = periodSec * 1000;
    
    var printMessage = function () {
    console.log("Ты смотришь в консоль уже " + (counter * periodSec) + " сек");
    counter++;
    };
    
    var internvalId = setInterval(printMessage, periodMsec);
    Ответ написан
  • Symfony при обновлении URL выдает ошибку 404, с чём может быть связана данная проблема?

    @myLizzarD
    PHP developer
    Вам нужно добавить в симфони роут, который будет соответствовать урлу /home и указать у него контроллер и экшен такой же как и для index роута вашего. Что-то типа:

    my_application_home_page:
    path: /home
    defaults: { _controller: MyBundle:IndexController:index }

    и для всех урлов, которые должны обрабатываться вашим ангуляром - создавайте соотвествующие роуты в симфони, которые будут вызывать один и тот же экшен - indexAction вашего контроллера. Таким образом после перезагрузки страницы при любом урле будет вызван ваш index контроллер, а ангулар на лету подхватит урл и вызовет нужный ангуларовский контроллер
    Ответ написан
    Комментировать
  • Как получить первую букву поля string с помощью DQL ?

    @myLizzarD
    PHP developer
    Предположения:
    - доктрина не понимает такую функцию. Решить проблему можно вот так
    - если вы вызываете getResult у полученной query, то в любом случае получите ошибку, ведь доктрина не знает, на какое поля замапить результат. Для этого вам необходимо поменять
    LEFT([поле],1)
    на

    LEFT([поле],1) as firstLetter

    и вызвать не getResult, а getArrayResult, например.
    Ответ написан
    Комментировать
  • Как организовать првильное кеширование сущностей в Doctrine 2?

    @myLizzarD
    PHP developer
    К сожалению запросы будут производится всегда, так устроена doctrine, ей необходимо сделать дозапрос сущности, чтобы знать о ее отношениях с другими сущностям. Как она может вернуть вам children-ов, если не знает, есть они у этой сущности или нет?
    Ответ написан
    Комментировать
  • Как реализовать пользовательскую вставку?

    @myLizzarD
    PHP developer
    doctrine передает явным образом все имеющие параметры, а недостающие устанавливает как null. Хочу выяснить, в чём загвоздка?

    Это дефолтное поведение доктрины, причем правильное поведение. Если у вас в аннотации над полями first_name и last_name не указано значение nullable - оно по умолчанию будет false, что на уровне бд запрещает вставку null значения. Если вы пишите руками sql запрос, не указывая эти поля при вставке, то при исполнении запроса вы должны получить предупреждение, что нет дефолтного значения для поля. Запись вставить, только на место first_name, last_name запишется пустая строка.
    Поэтому у вас есть 2 вариант: либо добавить nullable=true, либо ставить дефолтное значение для поля в конструкторе. Другого не дано.
    Ответ написан
    Комментировать
  • Как организовать очередь API запросов в PHP?

    @myLizzarD
    PHP developer
    Почему бд не решает вопрос очередности? Записывается в бд скрипты в очередности запуска. Потом пишите скрипт, который проверяет, если ли записи на выполнение в бд, если есть - берет запись и запускает соответствующий скрипт, выставляя в бд флаг, например, is_executed, в true. И по крону можете каждую минуту запускать этот срипт.
    Ответ написан
  • Как на php генерировать файл?

    @myLizzarD
    PHP developer
    Все что вам нужно сделать:
    1) в Вашем шаблоне-файле в место $title и $text ставите, например, {{title}}, {{text}}.
    2) в месте, куда приходят данные формы, т.е. Ваши переменные, вы заменяете текст вот так
    $filename = "$name.html"
    $fileText = file_get_contents($filename);
    $newFileText = str_replace("{{title}}", $title, $fileText);
    $newFileText = str_replace("{{text}}", $text, $fileText);
    file_put_contents(newFileText, $newFilename)

    что-то вроде шаблонизатора. Теперь ваш файл содержит данные, введенные пользователем, все что осталось - отправить их
    3) отправляете файл одним из указанных в статье способов способы.
    4) если хотите отдать только 1 раз, то вам нужен такой способ
    $filename = "$name.html"
        $fileText = file_get_contents($filename);
        $newFileText = str_replace("{{title}}", $title, $fileText);
        $newFileText = str_replace("{{text}}", $text, $fileText);
        if (ob_get_level()) {
            ob_end_clean();
        }
        // заставляем браузер показать окно сохранения файла
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        echo $newFileText;
        exit;


    Код написан с целью показать способ и не претендует на универсальность.
    Ответ написан
    Комментировать
  • Хранение JSON в реляционных БД?

    @myLizzarD
    PHP developer
    Есть смысл иногда хранить JSON в некоторых ситуациях, но таким случаем очень мало.
    А вдруг вы захотите сделать позже поиск по комментариям, или по фотографиям. Что будете делать?
    В вашем случай однозначно необходимо разделить все это в разные таблицы. Сделать 1 дополнительный запрос по ключу( вытянуть фотографии) - это и нагрузкой то не назовешь для бд.
    То же самое и с комментариями.
    Ответ написан
    4 комментария
  • Общий рейтинг для разных типов entity в symfony 2?

    @myLizzarD
    PHP developer
    У вас не получится в данном случае сделать это нативно с помощью доктрины. По скольку связи между Vote и другими сущностями вы не создадите!
    Я вижу такое решение: по скольку вы используете JMSSerializerBundle для сериализации сущностей, то можете настроить подписчика, который будет на pre_serialize проверять тип сущности, доставать для нее рейтинг и добавлять в результат сериализации.
    Подробнее про это мы сможете прочитать тут
    Ответ написан
    Комментировать
  • Как сгруппировать многомерный массив по ключу?

    @myLizzarD
    PHP developer
    Вы можете просто отсортировать таким образом.
    $data = array(...);
    $sortedData = array();
    foreach($data as $row) {
       $sortedData[$row['group']][] = $row['user'];
    }
    Ответ написан
    5 комментариев
  • Как установить Phalcon + Nginx + PHP-FPM+ база?

    @myLizzarD
    PHP developer
    какой смысл вам подсказывать, если вы выполните инструкции и забудете. А потом при возникновении каких-нибудь проблем, например обновить mysql или установить php-расширение - побежите на форум. Вам самому должно быть это противным, если вы программист. Нужно просто уделить 1 день на какой-нибудь видео урок "как работать с linux-системой". Это вам пригодиться не раз.
    Ответ написан
    Комментировать
  • Ценится ли IT-специалист, который умеет все?

    @myLizzarD
    PHP developer
    Такие люди нужны в основном маленьким конторам, у которых не хватает средств иметь и пачку программистов, и сеошников и тд. Для таких контор вы - идеальный работник. Но тут нужно учитывать, чтобы быть полезным во всех областях сразу - нужно очень много времени + много времени, чтобы поддерживать знания на актуальном уровне. Проще выбрать 2-3 направления, в которых хотите развиваться.
    Ответ написан
    Комментировать
  • Как составить sql запрос, выборка из нескольких строк?

    @myLizzarD
    PHP developer
    SELECT user_id, COUNT(serv_id) as serv_count FROM 'mserv' WHERE serv_id IN (...) GROUP BY user_id HAVING serv_count = кол-ву переданных id.

    Если используется php, например, то до запроса считаете кол-во нужных сервисов и подставляете все в запрос
    Ответ написан
  • Как получить aceess_token api facebook?

    @myLizzarD
    PHP developer
    А для чего вам нужен токен? Если фетчить паблик данные, для которых не нужен пользовательский токен (например посты со страницы компании ), то можете использовать в качестве access_token строку
    $this->account->getAppKey().'|'.$this->account->getAppSecret()
    . В принципе это и есть бесконечных токен.
    Но для получения юзеро-зависимых данных, например получить всех друзей для текущего юзера, который зашел на ваш сайт, - тут более сложная процедура получения, описанная по этой ссылке .
    Вообще виды access_token описаны тут.

    П.С. если вы опишите конкретно ситуацию, для чего будете юзать токен - смогу подробнее объяснить.
    Ответ написан
    9 комментариев