суббота, 20 июля 2013 г.

Yii insert on duplicate key update

В Yii столкнулся с тем что понадобилось добавить в ActiveRecord, метод insertUpdate - генерирующий запрос INSERT INTO .... ON DUPLICATE KEY UPDATE к БД.

Комментарий от разработчиков по этому поводу:
Отсутствует потому как это специфичная для MySQL штука, а в Yii всё более-менее универсальное: работает для MySQL, SQLite, PostgreSQL, MSSQL и Oracle.
То что мне помогло:

  1. Yii. Расширить CActiveRecord
  2. yii-insert-on-duplicate-update
Самым простым решением стало:

        /**
         * @var ShopSearch $ShopSearch
         */
        $ShopSearch = ShopSearch::model()->findByAttributes(array(
            'text' => $search_text,
            'ip' => $_SERVER['REMOTE_ADDR'],
        ));
        if(!$ShopSearch){
            $ShopSearch = new ShopSearch;
        }
        $ShopSearch->attributes=array(
            'text' => $search_text,
            'shop_id' => $site_id,
            'count' => $ShopSearch->count++,
        );
        $res = $ShopSearch->save();

На основе документации Active Record

Комментариев нет:

Отправить комментарий