Yii2属性映射到tablename

Yii2属性映射到tablename,yii2,php-7,yii2-basic-app,Yii2,Php 7,Yii2 Basic App,我使用Yi2 2.0.9基本模板,并尝试设置我的类。 我在我的类中使用属性中其他类的引用 /** * *@property Contact contact */ class User extends ActiveRecord { public static function tableName() { return "user"; } /** * This is want I need */ public function da

我使用Yi2 2.0.9基本模板,并尝试设置我的类。
我在我的类中使用属性中其他类的引用

/**
*
*@property Contact contact
*/
class User extends ActiveRecord {

    public static function tableName() {
        return "user";
    }

    /**
    * This is want I need
    */
    public function databaseMapping(){
        return [
            "contact" => "contact_id"
        ];
    }
}
Yii2中是否有解决我问题的方法

谢谢马文·瑟尔

在Grails中,我可以这样写:

class User {

    Contact contact
    Boolean passwordExpired

    static mapping = {

        contact(column: 'contact_id')
        passwordExpired(column: 'password_expired')
    }    
}

User user = new User();
user.passwordExpired = true
user.contact = new Contact();

我希望相同的

更改标签,db列保持不变

public function attributeLabels()
{
    return [
        'contact_id' => Yii::t('app', 'Use your name here'),

    ];
}

您可能希望在模型类中使用方法
attributeLabels()
,定义要显示给最终用户的标签名称

public function attributeLabels() {
    return [
        'contact_id' => 'Contact',
    ];
}
但是,有时候,比如使用Yii2创建restfulapi时,您需要返回带有特定字段名的字段的json。对于这些定位,可以使用
fields()
方法:

public function fields() {
    return [
        'contact' => 'contact_id',
    ];
}

此方法返回默认情况下由
toArray()
返回的字段列表。您可以进一步查看。

您能再描述一下您的问题吗?是否要将属性名和db列名更改为其他名称?我的属性需要数据库中的其他名称。在我的类中,我有联系人,但我需要它作为数据库中的联系人id为什么要更改列名?更改标签名称。这很容易。@SRana我需要它原因是我的问题那么为什么不在类中保留与数据库属性名称相同的名称呢?为什么您需要类中的属性为
contact