yii2从两个模型中获取数据并将其呈现在视图中

时间:2016-10-24 12:48:44

标签: yii2

我有两个模特用户和图片 要在视图中绘制所有图片,我必须从图片中获取字符串,其中一个数据是userID,然后根据该userID从用户获取字符串,所以我得到userFolder 然后我可以使用组合数据绘制图片。

必须对DB中的所有图片进行此操作。

我可以从控制器

开始
$picturesModel= Pictures::find()->all();

但是我必须做什么?运行一个循环,同时获取用户数据,然后获取绘制图片的完整数据并将其存储在一些新的数组中,循环结束后我应该传递给查看?这是最好的方法吗?还是有什么简单的?

1 个答案:

答案 0 :(得分:1)

假设您的图片与用户具有一对一的关系 您可以添加到图片模型功能

class Pictures extends ActiveRecord
{
    // ...

    public function getUser()
    {
        return $this->hasOne(Users::className(), ['id' => 'user_id']);
    }
}

然后,如果您是控制器或在您的视图中,您需要访问与图片相关的用户

$pictureModel = Pictures::find()->where(['id'=>123])->one();

您可以访问与用户相关的

$userModel= $pictureModel->User;

或图片集

$picturesModels= Pictures::find()->all();

$userModel = $picturesModels[0]->user

或循环

$picturesModels= Pictures::find()->all();

foreach( $picturesModels as $key => $value ) {

  echo $value->user->your_att;  
}

您可以查看http://www.yiiframework.com/doc-2.0/guide-db-active-record.htmlhttp://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data

相关问题