Model Yii2中未识别的模型关系

Model Yii2中未识别的模型关系,model,yii2,yii2-basic-app,Model,Yii2,Yii2 Basic App,我创建了两个名为User和ReferralsForm的模型,其中Users是父对象,ReferralsForm是子对象。有两个外键是我从用户分配给ReferralsForm的,但名称不同。我正在使用Gii生成我的模型以及关系。结构如下: User ------------ users_id(PK), display_name, username, email, password, member_since, referral_hash ReferralsForm ------------- r

我创建了两个名为User和ReferralsForm的模型,其中Users是父对象,ReferralsForm是子对象。有两个外键是我从用户分配给ReferralsForm的,但名称不同。我正在使用Gii生成我的模型以及关系。结构如下:

User
------------
users_id(PK),
display_name,
username,
email,
password,
member_since,
referral_hash

ReferralsForm
-------------
referral_id(PK),
userid(FK),
referred_user_id(FK),
status
用户模型关系代码和属性

public function getReferrals()
{
    return $this->hasMany(ReferralsForm::className(), ['userid' => 'user_id']);
}

public function getReferrals0()
{
    return $this->hasMany(ReferralsForm::className(), ['referred_user_id' => 'user_id']);
}

public function attributeLabels()
{
    return [
        'user_id' => 'Userid',
        'username' => 'Username',
        'email' => 'Email',
        'display_name' => 'Display Name',
        'password' => 'Password',
        'member_since' => 'Member Since',
        'auth_key' => 'Auth Key',
        'referral_hash' => 'Referral Hash',
    ];
}
ReferralsForm模型关系代码和属性标签

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

public function getReferredUser()
{
    return $this->hasOne(User::className(), ['user_id' => 'referred_user_id']);
}

public function attributeLabels()
{
    return [
        'id' => 'ID',
        'userid' => 'Userid',
        'referred_user_id' => 'Referred User ID',
        'subscription_id' => 'Subscription ID',
        'status' => 'Status',
    ];
}
这是我的控制器:

public function actionReferrals()
{
    $query = User::find()->joinWith('ReferralsForm');

    $model = new User();
    $ref_hash = $model->getHash();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);  
    return $this->render('referrals' ,['dataProvider' => $dataProvider, 'ref_hash' => $ref_hash]);
}
但它还是给了我一个错误

Invalid Argument – yii\base\InvalidArgumentException
app\models\User has no relation named "ReferralsForm".

Caused by: Unknown Method – yii\base\UnknownMethodException
Calling unknown method: app\models\User::getReferralsForm()

如果您有一个关系名referrals(getReferrals()),那么应该在joinWith中使用referrals

$query = User::find()->joinWith('referrals');

似乎您在用户表或您的关系users\u id和User\u id中有一个类型。让我更新我的问题并添加属性。我在数据库端有一个名为referrals的关系。我认为数据库中的原始表已经被丢弃,应该改用模型。现在开始工作了,谢谢!你是说数据库中的视图。。还是外国钥匙。。无论如何,Yii2使用模型中作为getter提供的函数,hasMany(.)或hasOne()作为关系。。我刚刚意识到它为
joinWith
语句获取函数tablename()的返回值,这就是为什么它必须是
refererals
,因为它是tablename()函数的返回值*掌纹