【发布时间】:2015-09-29 14:45:07
【问题描述】:
我在网上看别人的代码、指南、教程等时还没有看到这个。
当我用 Gii 生成模型时,关系函数后面都有一个零。
示例:
class Benefit extends \yii\db\ActiveRecord
{
// truncated Yii Model code...
public function getType0()
{
return $this->hasOne(BenefitTypes::className(), ['id' => 'type']);
}
}
BenefitTypes 是一个 id 到名称的映射:
id | name
---------------
1 => Federal
2 => Non-Profit
在 'benefit' 表中,它有一个名为 'type' 的列,它与 'benefit_types' 表的 'id' 列相关。
虽然我应该能够(在 /views/benefit/index.php 中)'type.name' 但它也不起作用。它将列名称更改为“类型名称”并将“(未设置)”放入数据表中......
例子:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'somevalue',
'type.name',
],
]) ?>
发生了什么事,为什么它不像它应该做的那样?
更新
我开始认为关系函数名称的 0 后缀,即:getType0,是由于在表中使用“type”作为列名以避免重复或混淆。虽然我找不到这个记录,所以想对此有一个明确的答案。
我将函数名称更改为 getTypeRelation()。然后在 index.php 视图中,对于 detailview 小部件,使用 'typeRelation.name' 并通过关系返回名称就好了。
【问题讨论】: