注意事项
- 目录名称第一个字母大写
- 文件名称第一个字母大写
- 命名空间和目录保持一致
使用数据建模进行CURD操作,只需要在model文件中将相关配置设置好,基本上不需要写任何方法
创建控制和模型
在app/Models目录下创建一个DeleteModel文件
app/Models/DeleteModel.php
<?php
namespace App\Models;
class DeleteModel extends \CodeIgniter\Model
{
// 构造函数
public function __construct()
{
// 父类 自动使用默认配置组连接数据库
parent::__construct();
}
// 测试
public function tests()
{
echo __FILE__;
}
}
在app/controllers目录下创建一个Delete文件
app/controllers/Delete.php
<?php
namespace App\Controllers;
// 导入类
use App\Models\DeleteModel;
class Select extends BaseController
{
// 测试
public function index()
{
// 实例化 类
$delete = new DeleteModel();
// 调用测试方法
$delete->tests();
}
}
测试请求URL: localhost/delete
相关属性配置
在app/Models/DeleteModel.php
文件中设置相关配置
<?php
namespace App\Models;
class DeleteModel extends \CodeIgniter\Model
{
// 连接数据库的配置组名称 当不设置时, 使用配置文件中默认配置组
protected $DBGroup = '';
// 数据表名称 一个模型对应一个数据表
protected $table = 'user';
// 唯一标识 数据表主键 主要用于数据的URD时作为操作条件,也可以使用唯一键或者索引键,只是一种操作条件,最好使用全局唯一键
protected $primaryKey = 'id';
// 查询返回的数据类型 array数组 object对象
protected $returnType = 'array';
// 可写字段名称数组 当添加/更新时, 自动将不在数组中的字段过滤掉
protected $allowedFields = [
'guid',
'nickname',
'avatar',
'login_name',
'login_name_md5',
'login_pwd',
];
// 是否使用 $allowedFields 写入字段限制 true开启 false关闭
protected $protectFields = true;
// 是否自动添加写入时间 false否 true是 当添加/更新时, 自动将操作时间写入数据表中
protected $useTimestamps = false;
// 创建时间字段列名
protected $createdField = 'create_time';
// 更新时间字段列名
protected $updatedField = 'update_time';
// 软删除(逻辑删除)时间字段列名
protected $deletedField = 'delete_time';
// 时间格式 datetime, date, int
protected $dateFormat = 'int';
// 是否使用软删除(逻辑删除) false否 true是
protected $useSoftDeletes = false;
// 构造函数
public function __construct()
{
// 父类 如果未连接数据库,自动使用默认配置组连接
parent::__construct();
}
}
delete单条删除
在app/controllers/Delete.php
文件中创建方法model_delete,delete方式删除时,当model文件中设置$useSoftDeletes
开启后,认为当前删除是软删除(逻辑删除),根据$dateFormat
设置的格式,自动将日期时间写入到$deletedField
字段下,可以通过将第二个参数设置为true来强制永久删除(物理删除)
// 数据建模 删除单条数据
public function model_delete()
{
// 参数
$param = [
'id' => 7,
// 'guid' => '1621835845',
];
try {
// 实例化 类
$delete = new DeleteModel();
// 数据建模 删除数据 需要在model文件中设置 相关属性 比如: table、allowedFields、protectFields等等
// 第一种 $useSoftDeletes开启时,软删除(逻辑删除);否则,永久删除(物理删除)
$result = $delete->delete($param['id']);
// 第二种 强制永久删除(物理删除)
// $result = $delete->delete($param['id'], true);
// 第三种
// $where = [
// 'id' => $param['id']
// ];
// $result = $delete->where($where)->delete();
} catch (\Exception $e) {
// 异常
$message = $e->getMessage() ?: '删除失败';
log_message('error', json_encode($e));
exit('失败:' . $message);
}
exit('删除成功');
}
测试请求URL: localhost/delete/model_delete
delete批量查询
在app/controllers/Delete.php
文件中创建方法model_batch_delete
// 数据建模 删除批量数据
public function model_batch_delete()
{
// 参数
$param = [
'id' => [
8, 9
],
// 'guid' => '1621835845',
];
try {
// 实例化 类
$delete = new DeleteModel();
// 数据建模 删除数据 需要在model文件中设置 相关属性 比如: table、allowedFields、protectFields等等
// 第一种 $useSoftDeletes开启时,软删除(逻辑删除);否则,永久删除(物理删除)
$result = $delete->delete($param['id']);
// 第二种 强制永久删除(物理删除)
// $result = $delete->delete($param['id'], true);
// 第三种
// $result = $delete->whereIn('id', $param['id'])->delete();
} catch (\Exception $e) {
// 异常
$message = $e->getMessage() ?: '删除失败';
log_message('error', json_encode($e));
exit('失败:' . $message);
}
exit('删除成功');
}
测试请求URL: localhost/delete/model_batch_delete
purgeDeleted清除 软删除(逻辑删除)数据
在app/controllers/Delete.php
文件中创建方法model_purge_delete,purgeDeleted方法通过$deletedField
列永久删除(逻辑删除)所有IS NOT NULL的行,$useSoftDeletes
必须开启
// 数据建模 清除 软删除(逻辑删除)数据
public function model_purge_delete()
{
try {
// 实例化 类
$delete = new DeleteModel();
// 数据建模 清除 软删除(逻辑删除)数据 需要在model文件中设置 相关属性 比如: table、allowedFields、protectFields等等
$result = $delete->purgeDeleted();
} catch (\Exception $e) {
// 异常
$message = $e->getMessage() ?: '删除失败';
log_message('error', json_encode($e));
exit('失败:' . $message);
}
exit('删除成功');
}