mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-11 19:20:01 +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)
|
- Bug #17960: Fix unsigned primary key type mapping for SQLite (bizley)
|
||||||
- Enh #17758: `Query::withQuery()` can be used for CTE (sartor)
|
- Enh #17758: `Query::withQuery()` can be used for CTE (sartor)
|
||||||
- Bug #17974: Fix ActiveRelationTrait compatibility with PHP 7.4 (Ximich)
|
- 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)
|
- Enh #18006: Allow SameSite cookie pre PHP 7.3 (scottix)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -614,7 +614,7 @@ SQL;
|
|||||||
$phName = QueryBuilder::PARAM_PREFIX . (count($params) + count($returnParams));
|
$phName = QueryBuilder::PARAM_PREFIX . (count($params) + count($returnParams));
|
||||||
$returnParams[$phName] = [
|
$returnParams[$phName] = [
|
||||||
'column' => $name,
|
'column' => $name,
|
||||||
'value' => null,
|
'value' => '',
|
||||||
];
|
];
|
||||||
if (!isset($columnSchemas[$name]) || $columnSchemas[$name]->phpType !== 'integer') {
|
if (!isset($columnSchemas[$name]) || $columnSchemas[$name]->phpType !== 'integer') {
|
||||||
$returnParams[$phName]['dataType'] = \PDO::PARAM_STR;
|
$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 "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 "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_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 "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 "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;--
|
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
|
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" (
|
CREATE TABLE "document" (
|
||||||
"id" integer,
|
"id" integer,
|
||||||
"title" varchar2(255) not null,
|
"title" varchar2(255) not null,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
namespace yiiunit\framework\db\oci;
|
namespace yiiunit\framework\db\oci;
|
||||||
|
|
||||||
use yiiunit\data\ar\DefaultPk;
|
use yiiunit\data\ar\DefaultPk;
|
||||||
|
use yiiunit\data\ar\DefaultMultiplePk;
|
||||||
use yiiunit\data\ar\Type;
|
use yiiunit\data\ar\Type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,4 +122,15 @@ class ActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest
|
|||||||
$record->save(false);
|
$record->save(false);
|
||||||
$this->assertEquals(5, $record->primaryKey);
|
$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