Web后端初探(8)--THINKPHP中的SQL模型

本文详细介绍了使用ThinkPHP框架中的模型(Model)进行数据库操作的方法,包括查询、插入、更新及删除记录等基本操作,并提供了实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用模型(Model)进行SQL查询比之前所叙述的方法都要快速和易读,那么他是如何被构造的呢?


首先在index目录下新建一个与controller并行的文件夹model,建立和数据库"表"名称相同的文件(不含前缀),

namespace app\index\model;   //命名空间
use think\Model;
class Data extends Model
{
//表名绑定类名
} 

类的名称必须和文件名、表名相同(注意要大写)  

如果要求表名不是data而是users,那么必须在类里写道:

protected $name='users';

如果连前缀都不相同,那么需要写:

protected $table='java_users';

不过,不管是官方还是我,都不建议这样做(意义何在?   )


[查询]

开始讲如何用

在index.php中写:

首先声明

use app\index\model\Data;
正文就可以写$a=Data::get(1);  //获取表中主键中的第一个元素

如果超出了现有的数据个数..那就什么都没有哦...


还可以多重条件

$data=Data::get(['id'=>1,'data'=>'这个是1号']);

上式等价于

$data=Data::where('id',1)->find();

[输出]

$data->id   //按照对象输出

或者

$data['id']    //按照数组输出


上面的那些方法只能找到一个数据哦

查询多个数据请使用all()

使用的时候使用foreach()来逐个遍历


[插入新数据]

$data=new Data;
$data->id=3;
$data->data='这个是3号';
$data->save();  //执行保存

[批量新增]

$data=new Data;
$list=[
  ['id'=>4,'data'=>'这个是4号'],
  ['id'=>5,'data'=>'这个是5号'],
];
if($data->saveAll($list)){
 echo '用户批量新增成功';
};

[查询方法:getByXxxx]

eg.

$data=Data::getByData('这个是1号');


[修改]

$data=Data::get(1);

$data->id=4;

$data->save();  //注意检查成功,否则返回 $data->getError()
//还可以使用检查函数isUpdata(true/false),来决定是更新/插入


[删除]

Data::destroy(1)

或者

$data=Data::get(1);

$data->delete();


[读取器与修改器]

如果想返回更加个性化的数据,那么我们可以修改它的返回值

eg.

  要返回正常的时间格式而不是时间戳,我们就要修改model里的方法

protected function getRegTimeAttr($value)
{
  return strtotime($value)
}

(第二个传入变量可选,代表的是整个数据对象)

调用时直接写

$data->reg_time 

可以看出,命名规则为get+驼峰命名+Attr

(要求原始数据中有这个变量)


类似的还有setRegTimeAttr(写入器):把某个数据修改后存入写入器,方便之后的操作(例如save())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值