The Yii InsertUpdateCommandBehavior extension adds up some functionality to the default possibilites of yii´s CDbCommand implementation.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
InsertUpdateCommandBehavior.php
LICENSE
README.md
composer.json

README.md

Yii InsertUpdateCommandBehavior

Latest Stable Version License

The InsertUpdateCommandBehavior extension adds up some functionality to the default possibilites of yii´s CDbCommand implementation. Creates and executes an INSERT with ON DUPLICATE KEY UPDATE MySQL statement.

Requirements:

Install

Via composer:

$ composer require dotzero/yii-insertupdate-behavior

Add vendor path and import path to your configuration file:

'aliases' => array(
    ...
    'vendor' => realpath(__DIR__ . '/../../vendor'),
),
'import' => array(
    ...
    'vendor.dotzero.yii-insertupdate-behavior.*',
),

Basic usage:

$command = Yii::app()->db->createCommand();
$command->attachBehavior('InsertUpdateCommandBehavior', new InsertUpdateCommandBehavior);
$command->insertUpdate('tbl_user', array(
    'name'=>'Tester',
    'email'=>'tester@example.com',
    'counter'=>'1'
), array(
    'name'=>'Tester',
    'email'=>'tester@example.com'
));

Creates and executes an INSERT with ON DUPLICATE KEY UPDATE MySQL statement

INSERT INTO `tbl_user` (`name`, `email`, `counter`)
VALUES ('Tester', 'tester@example.com', 1)
ON DUPLICATE KEY UPDATE `name`='Tester', `email`='tester@example.com';

Advanced usage:

$command = Yii::app()->db->createCommand();
$command->attachBehavior('InsertUpdateCommandBehavior', new InsertUpdateCommandBehavior);
$command->insertUpdate('tbl_user', array(
    'name'=>'Tester',
    'email'=>'tester@example.com',
    'counter'=>'1'
), array(
    'name'=>'Tester',
    'email'=>'tester@example.com'
    'counter'=>new CDbExpression('LAST_INSERT_ID(counter)');
));

Creates and executes an INSERT with ON DUPLICATE KEY UPDATE MySQL statement

INSERT INTO `tbl_user` (`name`, `email`, `counter`)
VALUES ('Tester', 'tester@example.com', 1)
ON DUPLICATE KEY UPDATE `name`='Tester', `email`='tester@example.com', `counter`=LAST_INSERT_ID(counter);

License

Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php