📜  显示数据库 codeigniter 4 (1)

📅  最后修改于: 2023-12-03 14:55:12.300000             🧑  作者: Mango

显示数据库 CodeIgniter 4

在 CodeIgniter 4 中,可以使用模型来与数据库交互。通过模型,在 MVC 架构中将数据分离出来,并提供更好的组织和维护数据的方式。

设置数据库连接

在开始前,我们需要设置数据库连接。在 CodeIgniter 4 中,可以通过 app/Config/Database.php 文件来设置数据库连接,如下所示:

$default = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'mydatabase',
    'DBDriver' => 'MySQLi',
    'DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'cacheOn'  => false,
    'cacheDir' => '',
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];

在这里,可以设置主要的数据库连接信息,如主机名、用户名、密码等。如果需要连接多个数据库,可以根据需要设置多个连接,例如:

$custom = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'custom_database',
    'DBDriver' => 'MySQLi',
    ' DBPrefix' => '',
    'pConnect' => false,
    'DBDebug'  => (ENVIRONMENT !== 'production'),
    'cacheOn'  => false,
    'cacheDir' => '',
    'charset'  => 'utf8',
    'DBCollat' => 'utf8_general_ci',
    'swapPre'  => '',
    'encrypt'  => false,
    'compress' => false,
    'strictOn' => false,
    'failover' => [],
    'port'     => 3306,
];

$this->forge->addConnection($default);
$this->forge->addConnection($custom, 'custom');

在这里,我们添加了一个名为 custom 的数据库连接,并将其与 custom_database 进行了关联。

创建模型

在 CodeIgniter 4 中,基本的模型类可以通过继承 CodeIgniter\Model 类来创建。一般来说,只需设置两个属性,即 $table$primaryKey,并继承自 CodeIgniter\Model 类,例如:

<?php namespace App\Models;

use CodeIgniter\Model;

class UserModel extends Model
{
    protected $table      = 'users';
    protected $primaryKey = 'id';
    protected $useAutoIncrement = true;

    // ...
}

在这里,我们创建了一个名为 UserModel 的模型,并设置其对应的表名为 users,主键为 id。除此之外,我们还可以通过设置 $useAutoIncrement 属性来自动增加主键,以便更方便地进行 CRUD 操作。

查询数据

在 CodeIgniter 4 中,可以使用 Query Builder 类来构建 SQL 查询,例如:

<?php namespace App\Controllers;

use App\Models\UserModel;

class UserController extends BaseController
{
    public function showUsers()
    {
        $model = new UserModel();
        $query = $model->get();
        $data['users'] = $query->getResult();

        return view('users', $data);
    }
}

在这里,我们通过 UserModel 来获取所有的用户数据,并将其传递到视图中进行渲染。

插入数据

我们可以通过 insert() 方法来向数据库中插入数据,例如:

<?php namespace App\Controllers;

use App\Models\UserModel;

class UserController extends BaseController
{
    public function addUser()
    {
        $model = new UserModel();
        $data = [
            'name' => 'John Doe',
            'email' => 'johndoe@example.com',
            'password' => password_hash('password', PASSWORD_DEFAULT),
        ];
        $model->insert($data);

        return redirect()->back()->with('success', 'User added successfully.');
    }
}

在这里,我们创建了一个名为 addUser() 的控制器方法,用于插入一条用户数据。我们首先初始化了 UserModel,然后创建了一个包含用户数据的 $data 数组。最后,我们使用 insert() 方法向数据库中插入数据,并进行了相应的重定向。

更新数据

我们可以通过 update() 方法来更新数据库中的数据,例如:

<?php namespace App\Controllers;

use App\Models\UserModel;

class UserController extends BaseController
{
    public function editUser($id)
    {
        $model = new UserModel();
        $data = [
            'name' => 'Jane Doe',
            'email' => 'janedoe@example.com',
        ];
        $model->update($id, $data);

        return redirect()->back()->with('success', 'User updated successfully.');
    }
}

在这里,我们创建了一个名为 editUser() 的控制器方法,用于更新用户数据。我们首先初始化了 UserModel,然后创建了一个包含要更新的用户数据的 $data 数组。最后,我们使用 update() 方法根据主键 $id 更新数据库中的数据,并进行了相应的重定向。

删除数据

我们可以通过 delete() 方法来删除数据库中的数据,例如:

<?php namespace App\Controllers;

use App\Models\UserModel;

class UserController extends BaseController
{
    public function deleteUser($id)
    {
        $model = new UserModel();
        $model->delete($id);

        return redirect()->back()->with('success', 'User deleted successfully.');
    }
}

在这里,我们创建了一个名为 deleteUser() 的控制器方法,用于删除一条用户数据。我们首先初始化了 UserModel,然后使用 delete() 方法根据主键 $id 来删除数据,并进行了相应的重定向。

结论

在 CodeIgniter 4 中,可以通过模型来更好地组织和维护数据。通过 Query Builder 类,可以轻松地进行数据库操作,包括查询、插入、更新和删除等操作。