Задать вопрос
  • How to join from another tabel?

    ON company_type.id = companies.company_type_id
    Ответ написан
    Комментировать
  • Хочу разобраться в коде данного скрипта. Как выдернуть элемент из массива в данном примере?

    $file в вашем случае не массив, а объект SimpleXMLElement, он наполнен данными из xml файла, сам класс SimpleXMLElement имплементирует интерфейс Traversable, что позволяет ему использоваться в цикле foreach, $el - также объект типа SimpleXMLElement, доступ к его полям можно получить напрямую, как тут $el->CharCode, это работает через магический метод __get(). __toString() - метод, который приводит объект SimpleXMLElement к строке.
    Чтобы подробнее понять, как он работает и что есть внутри, загляните в класс SimpleXMLElement и посмотрите, что там есть, тогда станет понятнее.

    Что касается кода, то можно записать как-то так:

    $file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=" . date("d/m/Y"));
    
            $values = [];
    
            foreach ($file as $el) {
                if ($el->CharCode == 'USD' || $el->CharCode == 'EUR') {
                    $values[$el->CharCode->__toString()] = $el->Value->__toString();
                }
            }
            print_r($values);
    Ответ написан
    Комментировать
  • В чем правильно сохранить состояние выполнения?

    Для таких целей очень удобно использовать memcache, сетите значение по уникальному ключу, например MY_KEY_ . id_user с TTL на 5 минут, перед выполнением проверяете, нет ли такого значения в кеше. По истечении ttl кеш сам убьет это значение. Базу данных для таких вещей дергать очень нецелесообразно и ресурсозатратно, особенно, если проект под нагрузкой.
    Ответ написан
  • Сколько записей может максимально храниться в таблице?

    Я не слышал о том, чтобы в MySQL был на уровне ядра какой-то лимит на кол-во записей. Тут все зависит от того, какой объем вашего накопителя. Что касается 1 млн записей, то это не много, средний размер таблицы на более-менее highload проекте - 10-30 млн. На моем проекте есть таблицы с 300+ млн. записей и все ок. Если у вас вопрос о том, насколько трудно будет делать выборки по таким таблицам, то тут нужно правильно проектировать структуру таблиц, думать над индексами и оптимизировать запросы, тема достаточно обширная, можете на этот счет найти много информации в интернете.
    Ответ написан
    Комментировать
  • Расположение кода при работе с Doctrine?

    Обычно, бизенс-логику выносят в отдельный слой. Напишите классы-сервисы, куда и поместите свою бизнес-логику. Где они будут лежать и как называться - это, по сути, ваше дело уже. А сами сервисы потом уже инжектите в контроллеры и вызывайте нужные вам методы.
    Ответ написан
    6 комментариев
  • Какой индекс поставить в таблицу mysql?

    При построении составных индексов учитывайте то, какой объем данных у вас будет попадать на первый и второй индекс. Выполнив два запроса SELECT lastname_id, count(*) FROM t GROUP BY lastname_id и SELECT firstname_id, count(*) FROM t GROUP BY firstname_id , можно увидеть, сколько записей содержит каждое значение колонки в таблице. Там, где меньше - ту колонку и нужно ставить первой в индекс, так как если среднее кол-во значений lastname_id будет равно 1000, а firstname_id - 20000, то MySQL сразу сократит количество перебираемых записей до 1000, вместо 20000.

    Так же советую почитать про EXPLAIN - очень помогает находить тяжелые запросы и лучше понять, как MySQL делает поиск.
    Ответ написан
  • Как сделать сабмит формы и автообновление ListView?

    @oleglysenko Автор вопроса
    <?php
    Pjax::begin(['id'=>'pjax-container-form']);
    $form = ActiveForm::begin(['id' => 'form-feedback',
                               'enableAjaxValidation' => true,
                               'action' => '/feedback/index',
                               'options' => ['data-pjax' => true]
                                ]);?>
    
    <?= $form->field($model, 'name')->textInput(['value' => !Yii::$app->user->isGuest ? Yii::$app->user->identity->username : '']) ?>
    
    <?= $form->field($model, 'email')->textInput(['type' => 'email', 'value' => !Yii::$app->user->isGuest ? Yii::$app->user->identity->email : ''])?>
    
    <?= $form->field($model, 'comments')->textarea(['rows' => 5]) ?>
    
    <?= $form->field($model, 'id_obj')->textInput(['type' => 'hidden', 'value' => $id_obj])->label(false)?>
    
    <?= $form->field($model, 'type')->textInput(['type' => 'hidden', 'value' => $type])->label(false)?>
    
    <div class="form-group">
        <?= Html::submitButton('<span>Отправить</span>', ['class' => 'btn btn-primary reg-btn', 'name' => 'signup-button']) ?>
    </div>
    
    <?php ActiveForm::end(); ?>
    <?php Pjax::end(); ?>
    
    
    <?Pjax::begin(['id'=>'pjax-container-comments']);?>
    <?= ListView::widget([
        'dataProvider' => $dataProvider,
        'itemView' => '_list',
        'layout' => "{summary}\n{items}\n{pager}",
        'summary' => '',
        'itemOptions' => [
            'tag' => 'div',
            'class' => 'feedback',
        ],
    ]);
    ?>
    
    <? Pjax::end();?>
    <?php
    $this->registerJs('
                $("#pjax-container-form").on("pjax:end", function() {
                    var url = "' . Url::toRoute(['/feedback/index']) . '";
                    $.pjax({url: url, container: "#pjax-container-comments"});
                })');
    ?>
    Ответ написан
    Комментировать