【问题标题】:Codeigniter 4 - won't load from the databaseCodeigniter 4 - 不会从数据库加载
【发布时间】:2020-02-08 22:07:55
【问题描述】:

编辑问题已解决:

在为此进行了很长时间的斗争,并且非常详细地审查了每一个 Xampp apache 和 Sql 设置之后,我发现......这与它无关。什么都没有。

问题是我将一段代码(一个 php 函数)放在它应该用于的类之外......所以不用说,它永远不会起作用。

有点像荷马辛普森的时刻。

原始荷马辛普森时刻:

我有以下问题:

在本地(使用 Xampp)设置 CI4 后,我被困在 the tutorial 的以下部分。转到 localhost:8080/news 后,我没有看到带有文章的新闻提要。相反,我收到一条错误消息,指出没有新闻并且是“找不到任何新闻”。

我在这里有点不知所措。我检查了数据库信息,据我所知,它是正确的。我刚刚添加了数据库名称、用户、密码等。在此之前一切都很好。这是我的数据库的信息

public $defaultGroup = 'default';

/**
 * The default database connection.
 *
 * @var array
 */
public $default = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => 'my-db-password',
    'database' => 'my-db-name',
    'DBDriver' => 'mysqli',
    'DBPrefix' => '',
    'pConnect' => true,
    'DBDebug'  => (ENVIRONMENT !== 'development'),
    'cacheOn'  => false,
    'cacheDir' => '',
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];

我已经检查了教程中的代码,它都被正确地接管了。路径等也是有序的。

任何人都可以就我应该在哪里寻找问题或应该专注于哪里提供一些见解吗?这是由于 apache mysql 设置错误造成的吗?

【问题讨论】:

  • 您的视图可能有问题。我也建议你不要使用 CodeIgniter 4。现在还处于测试阶段,不是吗?。
  • @Kirasiris 谢谢。我发现了错误。我在制作新闻模型时犯了一个错误。显然我在其类之外调用了一个构造函数:-/。让我们称之为一时的大脑打嗝。尽管如此,还是感谢您的帮助。
  • 发生在我身上

标签: database codeigniter


【解决方案1】:

这不是数据库错误。看来这部分工作得很好。我怀疑问题是news 表中还没有数据。

【讨论】:

  • 我使用他们在教程中提供的 SQL 查询添加了数据库和种子记录。查看phpmyadmin,它说记录存在。
【解决方案2】:

我希望您尝试从基于 codeigniter 4 的数据库中获取数据。 使用它从 codeigniter 4 中的任何位置获取数据。

$news = db_connect()->table('news')->get()->getResult();

// This should happen within you view
foreach ($news as $article) {

} 

然后,如果您将模型扩展到默认模型, 使用这个:

<?php namespace App\Models;

use CodeIgniter\Model;

class NewsModel extends Model
{
        protected $table      = 'news';
        protected $primaryKey = 'id';

        protected $returnType = 'array';
        protected $useSoftDeletes = true;

        protected $allowedFields = ['name', 'email'];

        protected $useTimestamps = false;
        protected $createdField  = 'created_at';
        protected $updatedField  = 'updated_at';
        protected $deletedField  = 'deleted_at';

        protected $validationRules    = [];
        protected $validationMessages = [];
        protected $skipValidation     = false;
}

在您的控制器中使用:


$news = $newsModel->findAll();

这个查询可以通过插入查询来修改 在调用此方法之前根据需要构建命令:

    $users = $newsModel->where('active', 1)->findAll();

如果这没有帮助你引起我的注意。我是来帮你搞定这套的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多