尝试获取非对象yii的属性

yvgpqqbh  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(158)

我刚开始学习Yii框架,所以我是一个初学者。我很努力。我想用Yii 2框架从数据库中取数据。这是我的控制器

public  function actionView()
{

    $this->view->title = 'List Hotels';
    $items = ArrayHelper::map(Hotel::find()->all(), 'id', 'name');

        return $this->render('index', [
            'items' => $items,

        ]);

}

在我的视图文件中,我使用了如下所示的提取数据;

<?php

/* @var $this yii\web\View */

use yii\helpers\Html;

 $this->title = 'Hotel list';
 $this->params['breadcrumbs'][] = $this->title;
 ?>

<?php foreach ($items as $item): ?>

<p> <?= $item-> name ?></p>
<p> <?= $item->address ?></p>
<p> <?= $item->description ?></p>

<?php endforeach; ?>

当我在$items下写var_dumps($items)时,我可以看到数据。但是在视图中它说试图获取非对象的属性'name'。我在这里做错了什么,请指导我。谢谢你的时间。

zf9nrax1

zf9nrax11#

ArrayHelper::map()

返回一个数组,在你的例子中,第二个参数是一个键,第三个是一个值。所以你需要以数组元素的形式访问它的元素,而不是类属性。比如:

<?php foreach ($items as $key => $value): ?>

    <p> <?= $key ?></p>
    <p> <?= $value ?></p>

<?php endforeach; ?>

更多详细信息,请访问:https://www.yiiframework.com/doc/api/2.0/yii-helpers-basearrayhelper#map()-detail
但如果需要将数据作为类属性来访问,请更改控制器中的行:

$items = ArrayHelper::map(Hotel::find()->all(), 'id', 'name');

至:

$items = Hotel::find()->all();
1szpjjfi

1szpjjfi2#

$items = Hotel::find()->all();

我不应该添加数组帮助器

相关问题