无法使用Codeigniter 4从数据库中获取,插入数据

时间:2020-07-09 07:50:09

标签: php codeigniter codeigniter-4

我正在尝试新的Codeigniter 4 尝试按照教程创建第一个应用 https://codeigniter.com/user_guide/tutorial/news_section.html

我插入数据的控制器方法

public function create()
{
    $model = new NewsModel();

    if (! $this->validate([
        'title' => 'required|min_length[3]|max_length[255]',
        'body'  => 'required'
    ])) {
        echo view('templates/header', ['title' => 'Create a news item']);
        echo view('news/create');
        echo view('templates/footer');
    } else {
        $model->save([
            'title' => $this->request->getVar('title'),
            'slug'  => url_title($this->request->getVar('title'), '-', true),
            'body'  => $this->request->getVar('body'),
        ]);

        echo view('news/success');
    }
}

正在回显成功页面,但数据未插入数据库。

在我使用的.env文件中

 database.default.hostname = localhost
 database.default.database = news_db
 database.default.username = root
 database.default.password =
 database.default.DBDriver = MySQLi

我认为数据库连接已通过错误的数据库详细信息进行了检查,但无法正常工作

我的模特是

<?php namespace App\Models;

use CodeIgniter\Model;

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

    protected $allowedFields = ['title', 'slug', 'body'];

    public function getNews($slug = false)
    {

        if ($slug === false) {
            return $this->findAll();

        }

        return $this->asArray()
            ->where(['slug' => $slug])
            ->first();
    }
}

2 个答案:

答案 0 :(得分:0)

该错误很可能是由于您在Controller中的Model声明引起的。

$model = new NewsModel();

它应该是命名空间。

尝试:

$model = new \App\Models\NewsModel();

$model = model('NewsModel');

答案 1 :(得分:0)

我建议: 如果您还没有,请严格按照本教程进行操作,方法是扩展核心控制器,因为您没有在代码中显示它。

使用CodeIgniter \ Controller;

类新闻扩展了控制器

您没有使用App \ Models \ NewsModel; 在实例化Model类之前。您只能按照Ali编码器说明的方式进行操作。 再次建议您应该使用

$ request-> getPost() 代替$ this-> request-> getVar('title') 我建议所有这一切,因为那是我写我的方式,而且效果很好。