如何扩展Yii2用户dektrium配置文件模型以添加更多字段

如何扩展Yii2用户dektrium配置文件模型以添加更多字段,yii2,yii2-basic-app,yii2-user,Yii2,Yii2 Basic App,Yii2 User,我需要覆盖默认的配置文件模型。我已经成功地添加了我需要的字段,但是从那以后我就缺少了一些东西。在插入和更新时,这些字段不会更新到数据库 我已经创建了必要的迁移,所以数据库中已经有了这些字段 我遗漏了什么>见下面我的app/models/Profile.php <?php namespace app\models; /** * Description Profile * * This form @overrides dektrium\user\models\Profile */

我需要覆盖默认的配置文件模型。我已经成功地添加了我需要的字段,但是从那以后我就缺少了一些东西。在插入和更新时,这些字段不会更新到数据库

我已经创建了必要的迁移,所以数据库中已经有了这些字段

我遗漏了什么>见下面我的app/models/Profile.php

<?php

namespace app\models;

/**
 * Description Profile
 *
 * This form @overrides dektrium\user\models\Profile
 */
use dektrium\user\models\Profile as BaseProfile;
use yii\web\UploadedFile;
use Yii;
use dektrium\user\models\User;

class Profile extends BaseProfile {

    /**
     * public variables to be added to the model
     */
    public $profile_pic;
    public $expertise_id;
    public $country_id;

    public function rules() {
        $rules = parent::rules();

        $rules['profile_pic'] = ['profile_pic', 'file'];
        $rules['expertise_id'] = ['expertise_id', 'integer'];
        $rules['country_id'] = ['country_id', 'integer'];



        return $rules;
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels() {
        $labels = parent::attributeLabels();
        $labels['profile_pic'] = \Yii::t('user', 'Profile Picture');
        $labels['bio'] = \Yii::t('user', 'Biography');
        $labels['expertise_id'] = \Yii::t('user', 'Expertise');
        $labels['country_id'] = \Yii::t('user', 'Country');
        return $labels;
    }




}

首先,删除以下行:

public $profile_pic;
public $expertise_id;
public $country_id;

如果已经在表中添加了这些字段,则不需要声明它们。如您所见,也没有声明任何其他属性。通过从
ActiveRecord
扩展模型,并声明
tableName

Hi@chapskev,已经可以做到这一点了。您成功了吗?您没有得到错误提示:“where子句”中的未知列“id”,因为配置文件表的id不是用户id,而是用户id。我做不到work@open-是的,它正在工作。在您的表中是否有id或使用\u id,因为我确信如果在您的表中有id而不是用户\u id,您将遇到错误。最好的情况是您使用migrations@chpskev谢谢你的回答。但是,如果我将user_id更改为id,我将遇到问题,因为这些问题来自dektrium模块。我不了解您在什么时候获得异常,以及您是否使用自己的自定义模型。你问过关于堆栈溢出的问题吗?关于这个?我需要这方面的更多细节,以便提供帮助。您可以看到表user和profile分别具有id和user\u id。因此,请说明您在哪一点获得错误@open-ecommerce.org的操作与您在dektrium\user\models\Profile模型中添加新字段的操作完全相同。首先,我创建了一个迁移,将字段添加到dektrium Yi2用户模块附带的表配置文件中。我还设法将字段添加到表单中,但当我保存更改时,它不起作用,因为我认为我需要创建规则。这就是为什么我要添加这个类来扩展Profile类,但不起作用,因为我需要的是一个id,而不是原始的字段id\u用户。必须向模型说明主键是id\u user。在