• Yii2 кастомная сортировка в апи?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    А нужен ли sort? Если у Вас там dataProvider то проще наверное изменить query
    'query' => SomeModel::find()->orderBy('position = 2 DESC, position = 1 DESC, position = 3 ASC')

    Если все таки sort то должно работать так:
    $sort = new Sort([
            'attributes' => [
                'position' => [
                    'default' => 'position = 2 DESC, position = 1 DESC, position = 3 ASC',
                ],
            ],
        ]);

    Но вообще начиная с версии 2.0.12 можно так:
    'name' => [
        'asc' => '[[last_name]] ASC NULLS FIRST', // PostgreSQL specific feature
        'desc' => '[[last_name]] DESC NULLS LAST',
    ]

    вот доки: www.yiiframework.com/doc-2.0/yii-data-sort.html#$a...
    Ответ написан
    Комментировать
  • Vue как указать динамическое свойство?

    @akass
    Developer
    el: '#app',
        data: {
            rows: data,
            val: '',
            url: null,
            name: '',
            user_id: user_id,
        },
    computed: { 
           hasError: function() {
                         return this.name.length == 0;
                         }
    }
    Ответ написан
    Комментировать
  • Стоит ли использовать Docker на продакшене?

    kumaxim
    @kumaxim
    Web-программист
    Если у Вас один-три сервера, скорей всего, Docker Вам не нужен. В этом случае для управления конфигурацией лучше используйте ansible.

    Потребность в Docker возникает либо в случае когда нужно расшарать одно окружение на множество машин, например, у меня и моих коллег сейчас девелоперское окружение(php + apache + mysql + redis) крутиться на контейнерах. Второй пример - нужно настроить динамическое горизонтальное масштабирование. Этот вариант Вам нужно рассматривать, только если Вы используйте AWS или что-то подобное.

    В целом, docker / ansible / chef / puppet и т.п. Вам нужны только в случае, если нужно шарить одно окружение на разные машины, причем часто, с уверенностью что оно везде одно. Другого примера использования придумать не могу.
    Ответ написан
    1 комментарий
  • Поиск в массиве используя массив ключей?

    DevMan
    @DevMan
    $a1 = ['a', 'b', 'c'];
    $a2 = ['a'=>10, 'b'=>20, 'c'=>30,'d' => 40];
    print_r(array_intersect_key($a2, array_flip($a1)));
    https://ideone.com/0M9o2W
    Ответ написан
    4 комментария
  • Целесообразно ли использовать Angular 4 на классическом PHP сайте, а не в роли SPA?

    Вы же сами всё верно написали.
    Если только вы не имели в виду и страницы, которые сейчас рендерятся на сервере для поисковиков, перевести на Ангуляр - это ерунда (бессмысленно вообще и через жопу в частности).
    Т.е. то, что у вас сейчас на jQ+KO - можно и переписать, но вряд ли это какой-то выигрыш даст кроме того, что станет "стильно модно молодёжно".. и геморройно..
    И кстати, если уж всё равно захотите переписать по-современному, очень рекомендовал бы выкинуть Ангуряр из кандидатов, и в первую очередь смотреть на Vue.
    Ответ написан
    4 комментария
  • Как сделать версионность как на вики?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Не работал с бухгалтерскими базами, но для своей базы MySQL хранение истории изменений использую JSON. Есть отдельная таблица history с полями - table_name, table_id и history (JSON) с данными типа массив [], в который добавляются записи формата JSON, за которыми производится наблюдение. На пользовательской таблице висят триггеры на добавление, изменение, удаление. Как только в пользовательской таблице производятся изменения, то триггеры записывают изменения в таблицу history. Это позволяет отслеживать всю историю работы с записью от момента создания, до удаления не вставляя код во всякие процедуры или бизнеслогику, а работая абстрактно только средствами базы.
    Ответ написан
    4 комментария
  • Javascript уникальные значения свойства объектов?

    larisamoroz
    @larisamoroz
    Курю маны, втыкаю в код, ваяю, починяю.
    let uniq_serial = {};
    data.map((el,id) => serials_object[el.area] = id);
    uniq_serial = Object.keys(uniq_serial);


    где data — ваш объект.
    Ответ написан
    Комментировать
  • Ltree postgres как исключить из поиска?

    BuriK666
    @BuriK666
    Компьютерный псих
    where not category_path ~ '1817'
    Ответ написан
    Комментировать
  • Postgres не обновил sequence при вставке с PK?

    @miksir
    IT
    В отличии от мускуля, где автоинкремент встроен в потроха на уровне движка, сиквенс - это просто некий отдельно лежащий счетчик

    Для того, что бы он работал как автоинкремент - нужно каждый раз получать значение конкретного счетчика, делается это путем назначения default значения на первичный ключ таблицы в виде вызова функции nextval.
    id integer NOT NULL DEFAULT nextval('"some_id_seq"'::regclass)

    default значение отрабатывает только если это поле не было передано во вставке или было передано со значением default.

    Т.е., если вы вставляете в таблицу в явным указанием id - default не выполняется, сиквенс не меняется. Так что в этом случае нужно явно проставить значение счетчика через setval
    Ответ написан
    Комментировать
  • Php sleep до конца часа?

    egor_nullptr
    @egor_nullptr
    $now = time();
    $nhour = $now + 3600;
    $bnh = $nhour - ($nhour % 3600);
    sleep($bnh - $now);
    Ответ написан
    Комментировать
  • Как должен выглядеть процесс работы с Docker?

    vyachin
    @vyachin
    Ищу работу
    как я понял по ответам тут собрались адепты докера. В этой церкви последователь должен появиться атеист. Только сегодня был большой срач насчет какие проблемы можно получить при переходе на докер https://habrahabr.ru/post/332450/ очень советую почитать.

    Теперь к вашему вопросу. Докер НЕЛЬЗЯ использовать для персистентный образов. Т.к. если его правильно готовить никакой уверенности нет на какой ноде будет запускаться ваш контейнер физический. Т.е. все что пишет в память или на диск нельзя оборачивать в докер контейнер. Потом есть системы оркестрации, которые ваш контейнер могут с одной ноды на другую перебросить, что вы думаете будет с памятью контейнера - правильно, она очистится.

    Тут мне могут возразить что у нас все работает на "отлично" - это вы господа с проблемами не сталкивались. Читаем статью по ссылке выше и начинаем готовиться.

    Давайте разберем ваш стек и посмотрим что можно упаковать в докер контейнер.
    - NodeJS - не знаю как это у вас работает, если нет состояния - то можно
    - MongoDB - база, пишет в файлы, однозначно нельзя
    - ElasticSearch - этого зверя точно нельзя он и в память и на диск пишет
    - Redis - пишет в память, точно нельзя

    И что в итоге вы хотите обернуть в контейнер? И зачем вам докер? Чтоб mongodb была запущена от имени root? При этом мы помним о проблемах с безопасностью самой mongodb. Или elasticsearch завернуть в докер, он физический сервер способен утилизировать на 100% по памяти, пропускной способности дисковой подсистемы и 100% процессорного времени, а вы ему хотите еще один уровень абстракции в лице докера? ))

    Одно дело на компьютере разработчика использовать docker-composer и совсем другое дело в продакшене.
    Ответ написан
    8 комментариев
  • Почему разработчики под OS X не востребованы?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Таинство в проценте рынка занимаемого OSX
    Ответ написан
    Комментировать
  • Yii2 каким образом можно видоизменить gii console?

    qonand
    @qonand
    Software Engineer
    Напишите свой генератор на базе yii\gii\generators\crud\Generator или yii\gii\Generator который будет реализовывать необходимые Вам действия и подключите его к модулю gii
    Ответ написан
    Комментировать
  • Yii2 2 дб миграции?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    В директории db_dev располагаются файлы миграций для базы db_dev
    php yii migrate --migrationPath=@app/migrations/db_dev --db=db_dev

    Или в миграции
    public function init()
        {
            $this->db = 'db_dev';
            parent::init();
        }
    Ответ написан
    Комментировать
  • Yii2 как ограничить выборку hasmany?

    fornit1917
    @fornit1917
    Вот так надо:

    $trademark->getNews()->orderBy(['created_at' => SORT_DESC])->limit(4)->all()


    Когда вы обращаетесь к проперте news, под капотом уже выполняется запрос и возвращается результат.
    Поэтому надо обращаться к методу getNews() - он вернет объект query на который вы сможете навесить дополнительные условия и потом вызвать all() уже.
    Ответ написан
    Комментировать
  • Вставка в таблицу из другой таблицы с dublicate update?

    qonand
    @qonand
    Software Engineer
    INSERT INTO table1 (val1, val2)        
    SELECT val1, val2 FROM table2
    ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`)
    Ответ написан
    Комментировать
  • Как из json получить объект с ключами не по порядку?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    $.jsonParse Пфф... джиквери_головного_мозга какой-то.

    Если можно чуть поменять JSON на {"2": "cvxcsv", "7": "dfsdsf"}:
    var str = "{\"2\": \"cvxcsv\", \"7\": \"dfsdsf\"}";
    var obj = JSON.parse(str);
    console.log(obj); // {"2": "cvxcsv", "7": "dfsdsf"};
    var str2 = JSON.stringify(obj);
    console.log(str2); // "{"2": "cvxcsv", "7": "dfsdsf"}"


    Если нельзя:
    eval regexp зря я это написал
    jQuery не умеет без кавычек, поэтому нужно использовать библиотеку, например json_parse.js.

    И вообще, люди, перелезайте на Vanilla JS!
    Ответ написан
    Комментировать
  • Rails new: Системе не удается найти указанный путь?

    @RsT1992
    Доброго времени суток, если проблема еще актуальна есть ответ (за последующие ошибки, ответственность не несу)
    И так чтобы исправить эту ошибку нужно:
    1. Пройти по пути к rails.bat (для тех кто незнает по умолчанию ставится C:\RailsInstaller\Ruby2.3.0\bin rails.bat);
    2. Открываем его блокнотом;
    3. Стираем все и вставляем вот этот путь
    @ECHO OFF
    IF NOT "%~f0" == "~f0" GOTO :WinNT
    ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
    GOTO :EOF
    :WinNT
    @"%~dp0ruby.exe" "%~dpn0" %*

    4. Сохраняйте, вводите в cmd опять rails -v и уоля.
    Спасибо за внимание.
    Для наглядности оставляю картинку
    57d63b4f47e94db48e12dded648f0e1a.jpg
    Ответ написан
    4 комментария
  • Php заполнить массив до определенного размера?

    janson
    @janson
    PHP-разработчик
    $v = [[1,1], [1,2], [1,3]];
    $len = 10;
    
    $newArr = array_pad($v, $len, ['example']);
    print_r($newArr);


    Добавит в массив $v элементов до длины в 10 элементов. Каждый новый элемент будет массивом c единственным элементом 'example'.
    Ответ написан
    Комментировать