我正在与Yii2合作创建一个应用程序。考虑一个模型A,它具有一个属性,该属性具有通过id对另一个模型B(它们都具有DB表)的外部引用。当我填充模型A的视图时,我需要显示引用的对象B的属性,而不是id。到目前为止,我在模型A中创建了一个变量,它在afterFind()期间填充,通过查询db相对于模型B的id的属性。有没有更好的方法来解决这个问题,不需要使用afterFinds或更多变量?你能提供一个例子吗?
答案 0 :(得分:1)
我认为您的解决方案不是更好的方法。
您可以查看关于计算字段和相关字段的this tutorial for sample。
基本上你应该做这些步骤
1)设置基础模型
jsonData := []byte(body)
var ESMVersion ESMVersionStruct
json.Unmarshal(jsonData, &ESMVersion)
fmt.Println(ESMVersion.APIMajorVersion)
fmt.Print(ESMVersion.APIMinorVersion)
}
2)如果有用的设置搜索模型
3)设置视图文件
/* ActiveRelation */
public function getModelB()
{
return $this->hasOne(TableB::className(), ['id' => 'country_id']);
}
/* Getter for ModelB Field name */
public function getModelBField() {
return $this->modenB->name;
查看示例中的详细信息以获取完整说明