Страница 1 из 1

rdbcommand

Добавлено: 2012.09.21, 08:03
RSol
Расширение для работы с MySQL:
  • INSERT INTO table (field) VALUES (1),(2)....
  • INSERT IGNORE
  • INSERT ... ON DUPLICATE KEY UPDATE
Требования
------------ Установка
-------
  • Скопируйте "RDbCommand.php" и "RDbConnection.php" в "components" директорию
  • Сконфигурируйте секцию db переметром 'class'

Код: Выделить всё

    'db' => array(
        'class' => 'RDbConnection',
        'connectionString' => 'mysql:host=localhost;dbname=database',
        'emulatePrepare' => true,
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
        'schemaCachingDuration' => 3600,
        'enableProfiling' => true,
        'tablePrefix' => '',
        'enableParamLogging' => true,
    );
 
Примеры использования
-------

MULTI INSERT

Код: Выделить всё

    Yii::app()->db->createCommand()->insert('table', array(
        array('field'=>1),
        array('field'=>2),
        array('field'=>3),
        array('field'=>4),
        array('field'=>5),
        ...
        array('field'=>'n'),
    ));
 
INSERT IGNORE ...

Код: Выделить всё

    Yii::app()->db->createCommand()->insertIgnore('table', array(
        'keyfield'=>1,
        'field'=>0,
    ));
 
INSERT ... ON DUPLICATE KEY UPDATE

Код: Выделить всё

    Yii::app()->db->createCommand()->insertUpdate('table', array(
        'keyfield'=>1,
        'field'=>0,
    ), array(
        'field'=>new CDbExpression('field+1'),
    ));
 

Re: rdbcommand

Добавлено: 2015.05.29, 14:55
ksetrin
Для yii2 такие возможности не писали?

Re: rdbcommand

Добавлено: 2015.05.29, 14:57
RSol
Нет, но там много есть по умолчанию.

Re: rdbcommand

Добавлено: 2015.06.02, 09:40
ksetrin
RSol писал(а):Нет, но там много есть по умолчанию.
Это верно, правда у Yii2 позиция писать только универсальные решения
Приходится особенности для тех или иных БД дописывать самостоятельно.
Была задача реализовать INSERT ... ON DUPLICATE KEY UPDATE, реализовал конечно, но не самым красивым образом, в обход AR получилось

Re: rdbcommand

Добавлено: 2015.06.02, 09:53
RSol
Тут вот есть реализация:

https://github.com/Filsh/yii2-platform/ ... nd.php#L92