Foreach循环显示主数据

时间:2016-03-09 16:27:02

标签: php layout foreach yii2

我正在使用foreach循环,我想在

中制作一些横幅
  

前端/布局/主

我创建了一个模型,我有这些静态函数:

public static function getUrl() {
    return Banner::find()->where(['Rel_User' => Yii::$app->user->identity->Id])->all();
}

public static function getImage() {
    return Yii::$app->basePath . '/web/' . $this->Image;
}

我想在我的主屏幕中显示此网址:

<?php foreach (Banner::getUrl() as $key): ?>

    <div class="banner">
        <a href="<?= $key['Url'] ?>" title="">
            <img src="<?=Url::base(true)?>/img/banner.jpg" alt=""></a>
    </div>
<?php endforeach; ?>

问题是我有3个横幅分配给已登录用户,此循环只显示一个横幅。我做错了什么?我的第二个问题是,我该怎么做只显示我的数据库中的URL,因为现在URL看起来像:

http://my-page.frontend.localhost/www.google.com

但在我的数据库中它是:

url= www.google.com

1 个答案:

答案 0 :(得分:1)

我认为您的代码存在严重问题!你有这个:

public static function getImage() {
    return Yii::$app->basePath . '/web/' . $this->Image;
}

在静态函数上使用$this关键字没有任何意义。当您将功能设为static时,您将其附加到class而非object$this指针指向instance class

对于您的问题,我建议您在has-many模型上定义User关系:

public function getBanners()
{
    return $this->hasMany(Banner::className(), ['Rel_User' => 'id']);
}

并在主视图中使用类似代码的内容:

<?php foreach (Yii::$app->user->identity->banners as $banner): ?>
    <div class="banner">
        <!-- Use your Banner model attributes from $banner variable -->
    </div>
<?php endforeach; ?>