代码之家  ›  专栏  ›  技术社区  ›  Roboto6_1on

Yii2对象属性

  •  0
  • Roboto6_1on  · 技术社区  · 6 年前

    我的数据库里有:

     -id
     -name
    

    和花坛

     -id
     -name
     -region - this is ID from ragion table
    

    在我的花模型里我有方法

    public function getRegion()
        {
            return $this->hasOne(Region::className(), ['id' => 'region']);
        }
    

    现在当我试着像这样使用它的时候

    $flower->region->name
    

    Trying to get property of non-object

    $flower->region
    

    返回区域的ID。如何使用获取地区名称

    $flower->区域->名称
    

    更新:

    public function getRegion0()
        {
            return $this->hasOne(Region::className(), ['id' => 'region']);
        }
    

    我不明白。为什么我不能使用简单的getRegion()

    1 回复  |  直到 6 年前
        1
  •  5
  •   rob006    6 年前

    关系不能与数据库属性使用相同的名称。数据库中的属性优先于方法( this answer 解释如何搜索属性的值)。如果你有 region 作为名称,将使用它而不是方法提供的属性/关系 getRegion() . Gii足够聪明,可以用不同的名字产生关系-尽管 region0

    在您的情况下,最好的方法是重命名 区域 列到 region_id