yii2中如何使用显示两个表的数据
How to use display data from two tables in yii2
我的项目中有2个tableMainAds
和AdsImage
,其结构如下
MainAds AdsImage
id id
category main_ads_id
description image
title
price
我有以下列表视图
<div class="container">
<div class="row">
<div class="item">
<div class="well">
<img class="img-responsive" src="http://placehold.it/700x400" alt="">
<span>.00</span>
<h4>
<a href="#">Project Name</a>
</h4>
</div>
</div>
</div>
</div>
这只是一个模板,我想显示来自 table advertisement
的所有数据,所以我该怎么做?那么我如何将该数据显示到视图文件中
到目前为止我已经试过了,但它不能正常工作
<?php foreach ($dataProvider->models as $model) {
echo "<div class='item'>" +
"<div class='well'>" +
"<img class='img-responsive' src='../uploads'.'$imagemodel->image'. alt=''>" +
"<span>.00</span>" +
"<h4>" +
"<a href='#'>Project Name</a>" +
"</h4>" +
"</div>"+
"</div>";
}
?>
是在视图文件或其他东西上显示数据的正确方法
我知道如何使用 detailview
但我不知道如何使用不同模型在视图页面上使用自定义布局。
我尝试了 Double H 在下面的回答中建议的方法,但出现如下错误
在 MainAds
模型中创建关系为:-
public function getAdsImage(){
$this->hasOne(AdsImage::className() ,['id' => 'main_ads_id']);
}
将控制器动作 Index
设为
public function actionIndex(){
$query = Addresses::find()->joinWith(['adsImage']);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
return $this->render('index' ,['dataProvider' => $dataProvider]);
}
在index.php
视图中
<?= \yii\widgets\ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => 'listview'
]); ?>
将您的 listview.php
文件更改为
<div class="container">
<div class="row">
<div class="item">
<div class="well">
<?php if(ArrayHelper::getValue($model->adsImage,'image') !== null):?>
<?= \yii\helpers\Html::img($model->adsImage->image,['class' => 'img-responsive' ,'alt' =>''])?>
<?php endif; ?>
<span>$<?= $model->price?></span>
<h4>
<a href="#"><?= $model->title?></a>
</h4>
</div>
</div>
</div>
</div>
我的项目中有2个tableMainAds
和AdsImage
,其结构如下
MainAds AdsImage
id id
category main_ads_id
description image
title
price
我有以下列表视图
<div class="container">
<div class="row">
<div class="item">
<div class="well">
<img class="img-responsive" src="http://placehold.it/700x400" alt="">
<span>.00</span>
<h4>
<a href="#">Project Name</a>
</h4>
</div>
</div>
</div>
</div>
这只是一个模板,我想显示来自 table advertisement
的所有数据,所以我该怎么做?那么我如何将该数据显示到视图文件中
到目前为止我已经试过了,但它不能正常工作
<?php foreach ($dataProvider->models as $model) {
echo "<div class='item'>" +
"<div class='well'>" +
"<img class='img-responsive' src='../uploads'.'$imagemodel->image'. alt=''>" +
"<span>.00</span>" +
"<h4>" +
"<a href='#'>Project Name</a>" +
"</h4>" +
"</div>"+
"</div>";
}
?>
是在视图文件或其他东西上显示数据的正确方法
我知道如何使用 detailview
但我不知道如何使用不同模型在视图页面上使用自定义布局。
我尝试了 Double H 在下面的回答中建议的方法,但出现如下错误
在 MainAds
模型中创建关系为:-
public function getAdsImage(){
$this->hasOne(AdsImage::className() ,['id' => 'main_ads_id']);
}
将控制器动作 Index
设为
public function actionIndex(){
$query = Addresses::find()->joinWith(['adsImage']);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
return $this->render('index' ,['dataProvider' => $dataProvider]);
}
在index.php
视图中
<?= \yii\widgets\ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => 'listview'
]); ?>
将您的 listview.php
文件更改为
<div class="container">
<div class="row">
<div class="item">
<div class="well">
<?php if(ArrayHelper::getValue($model->adsImage,'image') !== null):?>
<?= \yii\helpers\Html::img($model->adsImage->image,['class' => 'img-responsive' ,'alt' =>''])?>
<?php endif; ?>
<span>$<?= $model->price?></span>
<h4>
<a href="#"><?= $model->title?></a>
</h4>
</div>
</div>
</div>
</div>