尝试获取非对象yii的属性

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

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

  1. public function actionView()
  2. {
  3. $this->view->title = 'List Hotels';
  4. $items = ArrayHelper::map(Hotel::find()->all(), 'id', 'name');
  5. return $this->render('index', [
  6. 'items' => $items,
  7. ]);
  8. }

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

  1. <?php
  2. /* @var $this yii\web\View */
  3. use yii\helpers\Html;
  4. $this->title = 'Hotel list';
  5. $this->params['breadcrumbs'][] = $this->title;
  6. ?>
  7. <?php foreach ($items as $item): ?>
  8. <p> <?= $item-> name ?></p>
  9. <p> <?= $item->address ?></p>
  10. <p> <?= $item->description ?></p>
  11. <?php endforeach; ?>

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

zf9nrax1

zf9nrax11#

  1. ArrayHelper::map()

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

  1. <?php foreach ($items as $key => $value): ?>
  2. <p> <?= $key ?></p>
  3. <p> <?= $value ?></p>
  4. <?php endforeach; ?>

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

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

至:

  1. $items = Hotel::find()->all();
展开查看全部
1szpjjfi

1szpjjfi2#

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

我不应该添加数组帮助器

相关问题