2016-02-15 3 views
0

Мне нужно переопределить модель профиля по умолчанию. Мне удалось добавить поля, которые мне нужны, но с тех пор я чего-то не вижу. При вставке и обновлении эти поля не получают обновления в базе данных.Как расширить модель профиля профиля пользователя Yii2, чтобы иметь возможность добавлять дополнительные поля

Я создал необходимые миграции, так у меня есть эти поля в базе данных уже

Что я упускаю> смотрите ниже мое приложение/модели/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; 
    } 




} 
+0

Здравствуйте, @chapskev, вы заработали? dont you get и error: Неизвестный столбец 'id' в 'where clause', потому что в таблице профиля есть user_id вместо id. Я не могу заставить его работать –

+0

@ open-ecommerce.org да, он работает. В вашей таблице у вас есть id или use_id, я уверен, что если в вашей таблице есть id вместо user_id, вы столкнетесь с ошибкой. Наилучшим сценарием является то, что вы используете миграции – chapskev

+0

@chpskev благодарит много за ответ. но если я изменю user_id на id, я попаду в проблемы, потому что они исходят из модуля dektrium. –

ответ

2

Первая вещь, удалить это линии:

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

Если вы уже добавили эти поля в таблицу, вам не нужно их объявлять. Как вы можете видеть, ни одна из других свойств не объявляется. Это уже делается путем расширения модели от ActiveRecord и объявления tableName

Смежные вопросы