模型users
与category
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);
失败了。
答案 0 :(得分:3)
首先,由于关系类型有很多,category
名称具有误导性,因此最好使用categories
。
其次,您访问相关字段时出错。 $results
是User
模型的数组,每个模型的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了解详情。