zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Thinkphp6学习(5)模型知识总结(一)

学习 总结 模型 知识 ThinkPHP6
2023-06-13 09:13:57 时间

Thinkphp6学习(5)模型知识总结(一)

一、创建模型:

一个模型对应一个数据表,规则:驼峰式的

如:下表

1、单项目模型创建

第一步:创建一个跟控制器平级的目录,目录名:model

第二步:在 model 创建 Tp6Student.php 文件

2、多项目模型创建

第一步:在 index 项目中创建目录,目录名:model

第二步:在 model 创建 Admins.php 文件

二、模型的设置

 Model示例

<?php

namespace app\model;

use think\Model;

class Tp6Student extends Model

{

//设置模型名

protect $name ='Tp6Student';

//设置主键

protect $pk='id';

//设置数据表名

protect $table ='tp6_student';

}

三、模型的应用

1.实例化

用$stu=new Tp6Student() ;或$stu=new \app\model\Tp6Student();

也可以给它起一个别名:

在控制器app\controller中新建一个DataStudent.php

2.模型的CRUD方法

(1).save(),传递数据数组的方式来新增数据

(2)使用allowField()方法,允许要写入的字段,其它字段无示写入。

$stu->allowField([‘id’,‘name’])->save();

(3)replace()方法可以用于实现REPLACE into 新增

(4)saveAll()方法,可以批量新增数据,返回批量新增的数组

(5)可以调用创建的方法来新增数据,模型::create()

$stu =StudentModel::creat(参数1,参数2,参数3)

//参数1是新增数据数组,必选

//参数2是允许写入的字段,可选

//参数3为是否 replace写入,默认 false为 insert

(6)delete()方法,删除

(7)静态方法destroy()方法,也可以指删除,

如:$res = $stu=StudentModel::destroy([40,50,53,]);

(9)更新数据:

◆save()方法只会更新变化的数据,如果提交的修改数据没有变化,则不更新,

◆但如果你想强制更新数即使数据一样,那么可以使用 force()方法

Suser->force()->save()

◆Db::raw()执行SQL函数的方式,同样在这里有效:

user->priceDb: raw('price+1 ')

◆使用a11 owfield()方法,允许要更新的字段,其它字段就无法写入了

Suser->allowfleld(['username, 'email1)->save(,

◆通过 saveas1()方法,可以批量修改数据,返回被修改的数据集合

◆静态方法:模型::update()方法更新

(10)数据的查询

◆1.使用find()方法,通过主键(id)查询到想要的数据

$data= StudentModel:: find(40)

Dump($data)

◆也可以使用 where()方法进行条件筛选查询数据

$data= StudentModel:: where('username", 7")->find();

◆3.调用find()方法时,如果数据不存在则返回Nu11

◆4.同上,还有 findOrEmpty()方法,数据不存在返回空模型

◆5.此时,可以后使用 isempty()方法来判断,是否为空模

型Suser Usermodel: findorempty(1111)if (suser->isempty())techo'空模型,无数据!

◆6,使用 select([])方式,査询多条指定1d的字段,不指定就是所有字段

 select([19, 20, 211)

◆7.也模型方法也可使用where等连缀查询,和数据库查询的方式一样

如:$stu=StudentModel::where(

◆8.获取某个字段 value()或者某个列 column()的值

:Usermodel:where('id,79)->value('username)

Usermodel: wherein('id",[79, 118, 128])->column('username",id)

◆9.模型支持动态查询: getby*,*表示字段名

Usermodel: getbyusername('辉夜');

Usermodel: getbyemail(huiye 163. com);

◆10,模型支持聚合查询:max,min,sum,count,avg等