• Как дополнить таблицу недостающими значениями в MYSQL?

    ewgenio
    @ewgenio
    Всё по чуть чуть
    SELECT t2.user, IFNULL(t1.activity, 0) 
    FROM table2 AS t2 
    LEFT JOIN table1 AS t1 ON t1.user=t2.user  ORDER BY t2.user
    Ответ написан
    3 комментария
  • Как поставить в phpstorm вкладки в 2 ряда?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Editor → General → Editor Tabs → Show tabs in one row
    Ответ написан
    Комментировать
  • Почему метод belongsTo() не отрабатывает в модели Laravel?

    Denormalization
    @Denormalization
    Колонку надо в обоих случаях указывать явно.
    Тот факт, что оно работает с указанием поля 'id' - всего лишь совпадение (так как, по всей видимости, просто совпали id), и в дальнейшем приведет к ошибкам.
    В обоих случаях нужно явно указывать поле book_user_id, тогда все будет работать как нужно.

    А указывать нужно потому что laravel в данном случае не может корректно вывести имя связи из названия таблицы.
    Ответ написан
    Комментировать
  • Как получить ID только что созданной записи (Laravel)?

    miraage
    @miraage
    Старый прогер
    $model = Product::create($attributes);
    var_dump($model->id); // prints inserted id
    
    $model = new Product($attributes);
    $model->save();
    var_dump($model->id); // prints inserted id
    Ответ написан
    Комментировать
  • Что такое "инвертированный" цикл for в JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Классический цикл for в javascript состоит из 3х операторов: init, predicate, nextIteration
    В общей записи это выглядит так:for(init; predicate; nextIteration) { body }

    Цикл for исполняется следующим образом:
    1. Выполняется оператор init в области видимости блока цикла
    Обычно здесь объявляют переменную-счетчик и присваивают ей начальное значение
    Определение "в области видимости блока цикла" означает, что если init-оператор представляет собой оператор let - то объявленные переменные будут видны в цикле, но не за его пределами
    2. Вычисляется predicate, его результат приводится к boolean и последующее выполнение зависит от результата этого приведения:
    Если результат === false - то цикл завершается
    Если результат === true - то переходим к шагу 3
    3. Исполняется тело цикла - блок body, официально блоком быть не обязан, может быть и единичным оператором, но лучше всегда писать блок (фигурные скобки)
    4. Исполняется оператор nextIteration и переходим к пункту 2

    Теперь разберемся на конкретных примерах:
    Прямой цикл
    for(let i = 0; i < 10; i++) {
      console.log(i);
    }

    Объявляется переменная i и ей присваивается начальное значение 0
    Получается результат выражения Boolean(i < 10) -> 0 < 10 - true -> Boolean(true) - true -> можем выполнять тело
    Выполняется тело console.log(i); -> видим 0 в консольке
    Выполняется i++ -> i становится 1
    Получается результат выражения Boolean(i < 10) -> 1 < 10 - true -> Boolean(true) - true -> можем выполнять тело
    ...
    Так все продолжается 10 раз, на 10 итерации появляются изменения после этого момента:
    Выполняется i++ -> i становится 10
    олучается результат выражения Boolean(i < 10) -> 10 < 10 - false -> Boolean(false) - false -> завершаем цикл

    инвертированный цикл
    for(let i = 10; i--;) {
      console.log(i);
    }

    Объявляется переменная i и ей присваивается начальное значение 10
    Получается результат выражения Boolean(i--) -> i-- - 10, i = 9 -> Boolean(10) - true -> можем выполнять тело
    Выполняется тело console.log(i); -> видим 9 в консольке
    Оператор nextIteration - пустой, ничего выполнять не надо
    Получается результат выражения Boolean(i--) -> i-- - 9, i = 8 -> Boolean(9) - true -> можем выполнять тело
    ...
    Цикл по прежнему работает 10 раз, последняя итерация (когда i к моменту исполнения predicate равна 0):
    Получается результат выражения Boolean(i--) -> i-- - 0, i = -1 -> Boolean(0) - false -> завершаем цикл

    Как видим, за счет отсутствия nextIteration оператора, на каждой итерации выполняется на одно действие меньше, поэтому цикл отрабатывает быстрее
    Ответ написан
    2 комментария