2016-08-01 50 views
2

模型。

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); 

它失败。

回答

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了解更多信息。

相关问题