我有两个模特用户和图片 要在视图中绘制所有图片,我必须从图片中获取字符串,其中一个数据是userID,然后根据该userID从用户获取字符串,所以我得到userFolder 然后我可以使用组合数据绘制图片。
必须对DB中的所有图片进行此操作。
我可以从控制器
开始$picturesModel= Pictures::find()->all();
但是我必须做什么?运行一个循环,同时获取用户数据,然后获取绘制图片的完整数据并将其存储在一些新的数组中,循环结束后我应该传递给查看?这是最好的方法吗?还是有什么简单的?
答案 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.html和http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data