codeigniter 代码点火器4:在BaseBuilder上执行->findAll()时出现“尝试读取数组上的属性”name“”错误

z6psavjg  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(80)

这是我第一次探索Codeigniter 4,我遵循一些教程来了解基本的crud过程。
下面是使用模型查询的控制器。

<?php

namespace App\Controllers;

use CodeIgniter\RESTful\ResourcePresenter;

class Project extends ResourcePresenter
{

protected $modelName = 'App\Models\ProjectModel';

public function index()
    {

    return view('projects/index', ['projects' => $this->model->orderBy('created_at', 'asc')->findAll()]);
    }
}

然后下面是我想要显示列表的索引页和我有问题的部分。

<?php foreach ($projects as $project) : ?>
                <tr>
                    <td><?= $project->name ?></td>
                    <td><?= $project->description ?></td>
                    <td>
                        <form action="<?php echo base_url('/projects/delete/' . $project->id); ?>" method="post">
                            <a class="btn btn-outline-info" href="<?php echo base_url('/projects/show/' . $project->id); ?>">
                                Show
                            </a>
                            <a class="btn btn-outline-success" href="<?php echo base_url('/projects/edit/' . $project->id); ?>">
                                Edit
                            </a>
                            <button type="submit" class="btn btn-outline-danger">Delete</button>
                        </form>
                    </td>
                </tr>
            <?php endforeach; ?>

“name”和“description”是存储在数据库中的列名。
有谁能帮我检查一下这个问题是因为代码还是其他外部因素,因为我的朋友尝试了同样的教程,即使代码是一样的,也成功了?
以下是显示的错误。

uujelgoq

uujelgoq1#

->findAll()会传回元素数组。
代替:

<td><?= $project->name ?></td>
  <td><?= $project->description ?></td>

使用这个:

<td><?= $project['name'] ?></td>
  <td><?= $project['description'] ?></td>
  • 对其他部分进行同样的操作,即:$project->id .*

相关问题