У меня проблема с yii2, и мне нужна помощь:
У меня есть 2 базы данных в MsSQL db1 и db2, в db2 я имею представление к таблице db1. Проблема в том, что когда я вставляю в db2, я не могу получить идентификатор транзакции, используя $ model-> id или $ model-> getPrimaryKey ().
Кто-нибудь знает как это решить?
это моя модель:
<?php
namespace app\models;
use Yii;
class Documents extends \yii\db\ActiveRecord
{
public static function primaryKey()
{
return ['id'];
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'documents';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['realname', 'size'], 'required'],
[['realname'], 'string'],
[['size'], 'integer'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'realname' => 'Realname',
'size' => 'Size',
];
}/**
* @return \yii\db\ActiveQuery
*/
public function getDocumentSchoolRegistrationToInsurances()
{
return $this->hasMany(DocumentSchoolRegistrationToInsurance::className(), ['document' => 'id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getDocumentSchoolregistrations()
{
return $this->hasMany(DocumentSchoolregistration::className(), ['document' => 'id']);
}
}
После долгих исследований и пересмотра исходного кода yii2 я понимаю, что после использования save ()
yii только перезагружает значения реестра, если первичный ключ является автоинкрементным, что в моем случае никогда не будет выполнено.
Поскольку это View, решение состоит в том, чтобы использовать Yii :: $ app-> db-> lastInsertID
после использования save ()
метод, чтобы получить идентификатор, сгенерированный во вставке.
Я думаю, что было бы полезно иметь возможность принудительно загружать только что созданный реестр.
Других решений пока нет …