0

したがって、プロファイル テーブルで、新しいテーブル Rayon の「id」の FK である「rayon_id」という名前の新しいフィールドを作成しました。

両方のモデルにコード化された関係がありました。

Rayon.php

/**
 * @return \yii\db\ActiveQuery
 */
public function getProfiles()
{
    return $this->hasMany(Profile::className(), ['rayon_id' => 'id']);
}

および In Profile.php(オーバーライドされたモデル)

namespace app\models;

use dektrium\user\models\Profile as BaseProfile;

class Profile extends BaseProfile
{
    public function getRayon()
    {
        return $this->hasOne($this->module->modelMap['Rayon'], ['id' => 'rayon_id']);
    }

そして、ここで私のオーバーライドされたコントローラAdminController.php

namespace app\controllers\user;

use dektrium\user\controllers\AdminController as BaseAdminController;
use Yii;
use yii\helpers\Url;
use backend\models\Rayon;

class AdminController extends BaseAdminController
{
    public function actionUpdateProfile($id)
    {
        Url::remember('', 'actions-redirect');
        $user    = $this->findModel($id);
        $profile = $user->profile;
        $rayon = $profile->rayon;

追加中にエラーが発生しました$rayon = $profile->rayon;

ここに画像の説明を入力

未定義のインデックスを取得するのはなぜですか?

4

1 に答える 1

0

エラーを修正するための答えが見つかりました。

Rayon モデルを使用し、getRayon 関数を編集します

namespace app\models;

use backend\models\Rayon;
use dektrium\user\models\Profile as BaseProfile;

class Profile extends BaseProfile
{
    public function getRayon()
    {
        return $this->hasOne(Rayon::className(), ['id' => 'rayon_id']);
        //return $this->hasOne($this->module->modelMap['Rayon'], ['id' => 'rayon_id']);
}

ありがとうございました。

于 2016-08-18T10:19:51.280 に答える