1. PHP / Говнокод #25427

    +2

    1. 1
    $currentTask = Tasks::model()->findByPk($currentTask->id);

    Yii1. Ищет то, что уже имеет и у меня только 1 вопрос - что в голове у этой ТП?

    Запостил: Diakon, 05 Марта 2019

    Комментарии (12) RSS

    • показать все, что скрытоvanished
      Ответить
      • 1) а кто сказал что нет новой задачи с такой же ид?
        2) способ проверить что обьект в моделе :)?
        Ответить
        • findByPk предполагает, что id является PRIMARY KEY, т. е. уникален.
          Ответить
          • это не меняет того факта что задача может не находиться в моделе.

            и как сказал guest8 - просто грузит полный образ задачи из модели :)
            Ответить
            • нет, изменение данных модели происходит ТОЛЬКО в той части кода, что она писала. Причем изменение какраз через задание свойств в $currentTask. Т.е. все изменения уже есть в $currentTask.
              Ответить
    • Без кококонтекста не понятно.
      Ответить
    • $currentTask = Tasks::model()->findByPk($currentTask->id); - аналогичен запросу "SELECT * FROM task WHERE id=" . $currentTask->id . " LIMIT 1"
      Никаких обновлений не надо - изменение данных таблицы нигде в другом месте кода не происходит. Только в модели в которой это пишут. Она тупо делает запрос на получение данных, которые уже у нее есть в $currentTask.
      Ответить
      • лови извращенский пример где такое возможно:
        $currentTask = Tasks::model()->find($criteria);
        дальше чо-то делаем, но по независящим от нас обстоятельствам запись в базе удалилась, а нам надо ее проверить на exists.
        вот тут и вступает в дело
        $currentTask = Tasks::model()->findByPk($currentTask->id);
        а дальше
        if(null !== $currentTask) {
        DIEEEEEEEEEEEEEEEEEEE!!!!!!!!!!!!
        }

        ну либо мы ждем что данные в базе обновились другим процессом. тоже вариант.
        Ответить
    • Это как с айфоном, всегда охота иметь последнюю версию ))
      Ответить

    Добавить комментарий