插入其他数据库中的表的视图中

时间:2017-01-20 18:53:55

标签: php activerecord yii2

我遇到yii2的问题,我需要帮助: 我在MsSQL db1和db2中有2个数据库,在db2中我有一个db1表的视图。问题是,当我插入db2时,我无法使用$ model->获取事务ID。 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']);
    }

}

1 个答案:

答案 0 :(得分:1)

经过对yii2源代码的大量调查和修改后,我意识到在使用save ()后,如果主键是自动增量,则仅重新加载注册表的值,在我的情况下永远不会满足。
由于它是一个视图,因此解决方案是在使用Yii :: $ app-> db-> lastInsertID方法获取插入中生成的id后使用save ()
我认为能够强制新创建的注册表加载会很有用。