Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (14)

Лучшие ответы пользователя

Все ответы (7)
  • Как посадить свой сайт на CMS?

    Hesed
    @Hesed
    1. Берёте любую понравившуюся CMS. Например, Joomla или Wordpress.
    2. Разбираетесь какое-то время с архитектурой и основными понятиями - что такое компонент, модуль, плагин. У каждой CMS свой набор понятий, нужно просто привыкнуть.
    3. Берёте урок по созданию шаблона с нуля с помощью Dummy Template (пример) или без него. И переносите свёрстанный на HTML+JS+CSS сайт в CMS
    Ответ написан
    Комментировать
  • Как узнать кол-во изменённых строк в yii?

    Hesed
    @Hesed
    Критерий "on duplicate key update" есть только в MySQL (и форках) и его не шибко хорошо использовать, равно как и хардкодить SQL-запрос, когда есть DAO/AR. Если по существу, то "on duplicate key update" согласно официальной документации возвращает 1, если ряд был вставлен и 2, если обновлён. Поскольку это поведение самого MySQL, то средствами Yii это не обойти.

    Для решения задачи, я бы пересмотрел само выражение и подход к написанию запросов. Например:
    // Ищем, существует ли запись с ключом $id
    $model = MetaModel::model()->findByPk($id);
    
    // Если записи нет, мы будем делать insert
    if(!$model) {
        $model = new MetaModel();
        // Присваиваем атрибуты. Позаботьтесь о том, чтобы массив $attrs содержал их
        $model->attributes = $attrs;
        $res = $model->save();
    }
    else {
        $res = Yii::app()->db->createCommand()
            ->update('{{table}}',        // название таблицы
                array(
                    'meta_val'=>':meta', // какое поле
                ), 
                'id=:id',                // where id = ...
                array(
                    ':id' => $id,        // param binding
                    ':meta' => 'blablabla'
                )
            )
            ->execute();
    }
    
    echo intval($res).' rows affected';


    Код написан вслепую и не тестировался. Его однозначно необходимо заточить под свои нужды, я лишь предлагаю свой вариант. Более громоздко? Да, но мы:
    • избавляемся от привязки к MySQL;
    • от довольно пагубной привычки писать "чистый" SQL, когда в нашем распоряжении есть такие инструменты, как ActiveRecord и конструктор запросов
    • приучаемся использовать param binding, что, впрочем, не избавляет от необходимости sanitize'ить данные


    P.S. Это решение "в лоб", требующее минимально менять существующий код. По-хорошему, конечно, такие задачи надо решать до запроса на уровне сценариев. Или навешивать behavior.
    Ответ написан
    3 комментария
  • Выбор slim клавиатуры в стиле лэптопа

    Hesed
    @Hesed
    Logitech UltraX. На данный момент, увы, снята с производства, но запасы еще остались. Закупились на фирму впрок, альтернатив не нашли.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (3)