无法从带有codeigniter 4的数据库中获取、插入数据



我正在尝试新的代码点火器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 AppModels;
use CodeIgniterModel;
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();
}
}

错误很可能来自控制器中的Model声明

$model = new NewsModel();

它应该以名称命名。

尝试:

$model = new AppModelsNewsModel();

$model = model('NewsModel');

我建议:如果你还没有,你应该严格遵循教程,扩展核心控制器,因为你没有在代码中显示这一点。

使用CodeIgniter\Controller;

类新闻扩展控制器

您没有使用App\Models\NewsModel;在实例化Model类之前。你只能用阿里编码的方式来做这件事。再次建议您应该使用

$request->getPost((而不是$this->请求->getVar("标题"(我之所以建议这么做,是因为我就是这样写的,而且效果很好。

相关内容

  • 没有找到相关文章

最新更新