Server IP : 103.233.192.212 / Your IP : 3.148.202.164 Web Server : Apache/2 System : Linux sv1.inde.co.th 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021 x86_64 User : sumpatuan ( 1058) PHP Version : 5.5.38 Disable Function : symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,putenv,passthru,escapeshellarg,escapeshellcmd,pcntl_exec,proc_get_status,proc_nice,proc_terminate,pclose,ini_alter,virtual,openlog,ini_restore MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/sumpatuan/public_html/backup/framework/db/schema/sqlite/ |
Upload File : |
<?php /** * CSqliteCommandBuilder class file. * * @author Qiang Xue <qiang.xue@gmail.com> * @link http://www.yiiframework.com/ * @copyright 2008-2013 Yii Software LLC * @license http://www.yiiframework.com/license/ */ /** * CSqliteCommandBuilder provides basic methods to create query commands for SQLite tables. * * @author Qiang Xue <qiang.xue@gmail.com> * @package system.db.schema.sqlite * @since 1.0 */ class CSqliteCommandBuilder extends CDbCommandBuilder { /** * Generates the expression for selecting rows with specified composite key values. * This method is overridden because SQLite does not support the default * IN expression with composite columns. * @param CDbTableSchema $table the table schema * @param array $values list of primary key values to be selected within * @param string $prefix column prefix (ended with dot) * @return string the expression for selection */ protected function createCompositeInCondition($table,$values,$prefix) { $keyNames=array(); foreach(array_keys($values[0]) as $name) $keyNames[]=$prefix.$table->columns[$name]->rawName; $vs=array(); foreach($values as $value) $vs[]=implode("||','||",$value); return implode("||','||",$keyNames).' IN ('.implode(', ',$vs).')'; } /** * Creates a multiple INSERT command. * This method could be used to achieve better performance during insertion of the large * amount of data into the database tables. * Note that SQLite does not keep original order of the inserted rows. * @param mixed $table the table schema ({@link CDbTableSchema}) or the table name (string). * @param array[] $data list data to be inserted, each value should be an array in format (column name=>column value). * If a key is not a valid column name, the corresponding value will be ignored. * @return CDbCommand multiple insert command * @since 1.1.14 */ public function createMultipleInsertCommand($table,array $data) { $templates=array( 'main'=>'INSERT INTO {{tableName}} ({{columnInsertNames}}) {{rowInsertValues}}', 'columnInsertValue'=>'{{value}} AS {{column}}', 'columnInsertValueGlue'=>', ', 'rowInsertValue'=>'SELECT {{columnInsertValues}}', 'rowInsertValueGlue'=>' UNION ', 'columnInsertNameGlue'=>', ', ); return $this->composeMultipleInsertCommand($table,$data,$templates); } }