Пользователь yii2 dektrium user_id

Привет, ребята, я использую пользователя yii2 dektrium. Я бы сохранил user_id учетную запись в своей таблице. таблица User имеет связь 1..N с моей таблицей. Я princiapiante и не знаю, как сохранить идентификатор пользователя в моей таблице. Я пробовал так, но запись в базе данных пуста.

Моя модель

public static function tableName()
{
    return 'viaggio';
}


/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['citta_part','citta_arrivo','user_id'], 'required'],
        [['data_part','ora_part','data_arrivo','ora_arrivo'],'safe'],
        [['posti_disponibili', 'conferma_utenze', 'user_id','posti_max'], 'integer'],
        [['prezzo'], 'number'],
        [['citta_part', 'via_part', 'citta_arrivo', 'via_arrivo', 'veicolo'], 'string', 'max' => 45],
        [['note'], 'string', 'max' => 255],
        [['wifi', 'bagno', 'ac_dc','condizioni'],'integer'],
        [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],

    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'id_viaggio' => Yii::t('app', 'Id Viaggio'),
        'citta_part' => Yii::t('app', 'Citta Part'),
        'via_part' => Yii::t('app', 'Via Part'),
        'ora_part' => Yii::t('app', 'Ora Part'),
        'data_part' => Yii::t('app', 'Data Part'),
        'posti_disponibili' => Yii::t('app', 'Posti Disponibili'),
        'conferma_utenze' => Yii::t('app', 'Conferma Utenze'),
        'prezzo' => Yii::t('app', 'Prezzo'),
        'note' => Yii::t('app', 'Note'),
        'citta_arrivo' => Yii::t('app', 'Citta Arrivo'),
        'data_arrivo' => Yii::t('app', 'Data Arrivo'),
        'ora_arrivo' => Yii::t('app', 'Ora Arrivo'),
        'via_arrivo' => Yii::t('app', 'Via Arrivo'),
        'veicolo' => Yii::t('app', 'Veicolo'),
        'posti_max' => Yii::t('app', 'Posti Max'),
        'wifi' => Yii::t('app', 'Wifi'),
        'bagno' => Yii::t('app', 'Bagno'),
        'ac_dc' => Yii::t('app', 'Ac Dc'),
         'user_id' => Yii::t('app', 'User ID'),

    ];
}


public function getUser()
{
    return $this->hasOne(User::className(), ['id' => 'user_id'])->inverseOf('offris');
}

Мой контроллер

public function actionOffri() {

    $model = new Offri;

    if($model->load(Yii::$app->request->post()) && $model->validate() && $model->save()) {

      $model->$user_id = Yii::$app->user->identity->id;
      Yii::$app->session->setFlash('success', 'Hai inserito i dati correttamente');

      return $this->render('offri', ['model' => $model]);

    } else {

      Yii::$app->getSession()->setFlash('error', 'Completa correttamente tutti i campi.');
      return $this->render('offri', ['model' => $model]);
    }

}

предложения?


person Saba    schedule 31.08.2016    source источник


Ответы (2)


Сначала попробуйте переместить назначение для user_id перед проверкой, иначе проверка обязательно завершится ошибкой и модель не будет сохранена.

public function actionOffri()
{
    $model = new Offri;

    $model->$user_id = Yii::$app->user->id;
    if($model->load(Yii::$app->request->post())&& $model->validate() && $model->save()) {

        Yii::$app->session->setFlash('success', 'Hai inserito i dati correttamente');
        return $this->render('offri', ['model' => $model]);
    } else {
        Yii::$app->getSession()->setFlash('error', 'Completa correttamente tutti i campi.');
        return $this->render('offri', ['model' => $model]);
   }
}

или если вам нужно имя пользователя, вы можете использовать Yii::$app->user->identity->username

person scaisEdge    schedule 31.08.2016
comment
Вызов неопределенного метода app\models\User::find() - person Saba; 31.08.2016
comment
Я обновил ответ, используя Yii::$app-›user-›id вместо ii::$app-›user-›identity-›id; - person scaisEdge; 31.08.2016

Я думаю, что ваш код имеет ошибку:

$model->$user_id = Yii::$app->user->identity->id;

Попробуйте заменить его на:

$model->user_id = Yii::$app->user->identity->id;
person IStranger    schedule 31.08.2016