模型是一种对象-关系映射的封装,一般来说,每一个数据表会和一个模型对应
模型类和DB类最主要的区别在于对对象的封装
DB类返回的是一个数组或集合
模型类返回的是当前的模型对象实例,相比之下模型更高级
模型支持模型关联,模型事件
-
Moder模型和表映射规则
User => tp_users
UserLevel => tp_user_level
表名绑定类名
规则为:自动消除tp前缀,驼峰式命名
比如:tp_user_larvel(这是一张表)
则TP忽略类名为UserLarvel(U和L大写)
-
设置数据表
protected $name = ‘admin’;
设置完全的数据表
protected $table = ‘tp_account_log’;
-
方法:
1.在mvc结构下的morder类下新建一个以表名为文件名的类文件
2.命名空间:namespace app\index\morder
3.使用Moder类:use think\Model;
4.开始编写一个类:
Class User extends Model
{
proteced $name = ‘amdin’;//设置表名
proteced $table = ‘tp_account_log’;
}
5.在控制器层中调用,比如Index.php中
use app\index\model\User;
6.调用完毕之后,就可以开始使用模型方法
class User
{
public function Index()
{
//插入的第一种方法
$user = new Users;
$user->email = ‘1226404260@qq,com’;
$user->mobile = ‘135364541111’;
$user->save();//保存执行操作
//插入的第二种方法:用数组的方式插入
$userArr[‘email’]= ‘1226404260@qq,com’;
$userArr[‘mobile’] = ‘123456789’;
User::create($userArr)
//静态方法 create()用于插入数据,内部填写为一个数组
}
}
7.如何操作批量新增:
$user = new User; //先实例化类
$list = [
[‘email’ => ‘zhangsan@qq.com’,’moble’ => ‘123456789’]//第一条
[‘email’ => ‘lisi@qq.com’,’,moble’=>’654321’]//第二条
];
if($user = saveALL($list)){
echo ‘用户批量新增成功’;
}
8.如何查询记录
$user = User::get(1);
echo $user->mobile;
eecho $user->email;
或使用数组访问形式:
echo $user[‘mobile’];//这种方法和 $user->mobile;方法是一致的
9.使用函数+字段名方式获取查询某个数据,例如:
$user = User::getBy+字段名,完整如下
$user = User::getByMobile(‘123456’)
10.如果查询的不是主键,则使用数组方式进行查询
$user = User::get[‘mobile’=>’13536454104’,‘email’=>’1226404260@qq.com’];
11.也可以使用where()方式进行查询,比如
$user = User::where(‘mobile’,’13536454104’)->find();
12.查询多个数据,使用all()方法。例如:
$user = User::all();//查询出全部数据
$user = User::all(‘id’=>’4’)//指定ID为4的条件查询
13.isupdate(),函数为判断是否为更新操作
14.update()方法,固定定义成为就是修改方法,比如:
$userArr[‘mobile’] = ‘123456’;
$userArr[‘email’] = ‘122@qq.com’;
User::update($userArr,[‘user_id’,’1’]);
15.删除操作,del(); 例如:
$user = User::get(23);//获取到id为23的数据
$user->del();
或者使用更简单更便利的destroy(135)//删除指定ID,无须实例化,具体用法如下:
User::destory(21);//删除User表中的ID(主键)为21的数据
destory()方法在删除之前会先查询值在不在,在的话再进行删除
16.