mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 13:58:55 +08:00
Fix #18000: PK value of Oracle ActiveRecord is missing after save
This commit is contained in:
@ -13,6 +13,7 @@ Yii Framework 2 Change Log
|
||||
- Bug #17960: Fix unsigned primary key type mapping for SQLite (bizley)
|
||||
- Enh #17758: `Query::withQuery()` can be used for CTE (sartor)
|
||||
- Bug #17974: Fix ActiveRelationTrait compatibility with PHP 7.4 (Ximich)
|
||||
- Bug #18000: PK value of Oracle ActiveRecord is missing after save (mankwok)
|
||||
- Enh #18006: Allow SameSite cookie pre PHP 7.3 (scottix)
|
||||
|
||||
|
||||
|
||||
@ -614,7 +614,7 @@ SQL;
|
||||
$phName = QueryBuilder::PARAM_PREFIX . (count($params) + count($returnParams));
|
||||
$returnParams[$phName] = [
|
||||
'column' => $name,
|
||||
'value' => null,
|
||||
'value' => '',
|
||||
];
|
||||
if (!isset($columnSchemas[$name]) || $columnSchemas[$name]->phpType !== 'integer') {
|
||||
$returnParams[$phName]['dataType'] = \PDO::PARAM_STR;
|
||||
|
||||
24
tests/data/ar/DefaultMultiplePk.php
Normal file
24
tests/data/ar/DefaultMultiplePk.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* @link http://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license http://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yiiunit\data\ar;
|
||||
|
||||
/**
|
||||
* DefaultMultiplePk.
|
||||
*
|
||||
* @author mankwok <astleykwok@gmail.com>
|
||||
* @property int $id
|
||||
* @property string $second_key_column
|
||||
* @property string $type
|
||||
*/
|
||||
class DefaultMultiplePk extends ActiveRecord
|
||||
{
|
||||
public static function tableName()
|
||||
{
|
||||
return 'default_multiple_pk';
|
||||
}
|
||||
}
|
||||
@ -18,6 +18,7 @@ BEGIN EXECUTE IMMEDIATE 'DROP TABLE "constraints"'; EXCEPTION WHEN OTHERS THEN I
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "bool_values"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "animal"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "default_pk"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "default_multiple_pk"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "document"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "dossier"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
BEGIN EXECUTE IMMEDIATE 'DROP TABLE "employee"'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;--
|
||||
@ -194,6 +195,13 @@ CREATE TABLE "default_pk" (
|
||||
CONSTRAINT "default_pk_PK" PRIMARY KEY ("id") ENABLE
|
||||
);
|
||||
|
||||
CREATE TABLE "default_multiple_pk" (
|
||||
"id" integer not null,
|
||||
"second_key_column" char(10) not null,
|
||||
"type" varchar2(255) not null,
|
||||
CONSTRAINT "default_multiple_pk_PK" PRIMARY KEY ("id", "second_key_column") ENABLE
|
||||
);
|
||||
|
||||
CREATE TABLE "document" (
|
||||
"id" integer,
|
||||
"title" varchar2(255) not null,
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
namespace yiiunit\framework\db\oci;
|
||||
|
||||
use yiiunit\data\ar\DefaultPk;
|
||||
use yiiunit\data\ar\DefaultMultiplePk;
|
||||
use yiiunit\data\ar\Type;
|
||||
|
||||
/**
|
||||
@ -121,4 +122,15 @@ class ActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
|
||||
$record->save(false);
|
||||
$this->assertEquals(5, $record->primaryKey);
|
||||
}
|
||||
|
||||
public function testMultiplePrimaryKeyAfterSave()
|
||||
{
|
||||
$record = new DefaultMultiplePk();
|
||||
$record->id = 5;
|
||||
$record->second_key_column = 'secondKey';
|
||||
$record->type = 'type';
|
||||
$record->save(false);
|
||||
$this->assertEquals(5, $record->id);
|
||||
$this->assertEquals('secondKey', $record->second_key_column);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user