📅  最后修改于: 2023-12-03 14:55:12.300000             🧑  作者: Mango
在 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 类,可以轻松地进行数据库操作,包括查询、插入、更新和删除等操作。