访问关系为yii2的表字段

时间:2016-08-01 05:40:03

标签: yii2

模型userscategory

有关系
 public function getCategory() 
    {
         return $this->hasMany(Category::className(), ['user_id' => 'user_id']);
    }

我无法使用此关系访问类别字段。

   public function actionGetResults()
            {
                $results = users::find()->where(['user_id' =>8])
                                        ->with('category')
                                        ->all(); 

                echo "<pre>"; print_r($results);
            }

$results此处显示了一个包含类别字段的数组。即category_name,category_id等,但如果我这样做:

 echo "<pre>"; print_r($results->category_name);

失败了。

1 个答案:

答案 0 :(得分:3)

首先,由于关系类型有很多,category名称具有误导性,因此最好使用categories

其次,您访问相关字段时出错。 $resultsUser模型的数组,每个模型的categories属性包含该用户的相关Category模型数组。

使用嵌套的foreach循环:

foreach ($results as $user) {
    foreach ($user->categories as $category) {
        var_dump($category->name);
    }
}

或者获取第一个用户的第一个类别的名称:

$results[0]->categories[0]->name

请注意,第二种方法仅用于演示目的,如果用户或/和类别不存在,则可能会因Undefined index错误而失败。

阅读Working with Relational Data了解详情。