一、模型的定义及基本使用
与Db操作数据库相比,使用模型Model
类更方便。
在controller
文件夹同级目录新建文件夹model
,再新建Model
类,文件名与数据库的数据表名对应,如数据表为demo
,那么模型类取名为Demo.php
:
<?php
namespace app\model;
use think\Model;
class Demo extends Model
{
}
在控制器中使用模型类:
public function model1(){
$result = Demo::find(2);
dump($result);
}
浏览器输出:
这是输出的模型对象,如果要直接输出data数据,可以使用toArray
方法:
dump($result->toArray());
浏览器输出:
二、模型查询及其他使用
1. new 模型对象
除了上面的直接使用静态方法,也可以先new
一个对象再来操作,返回的也是模型对象或模型对象集合,也可以使用toArray
方法来转换为数组:
public function model2(){
$model = new Demo();
$result = $model->where('id','>',2)->select();
dump($result);
}
2. 模型获取器
模型获取器可以修改字段的值,也可以定义数据表不存在的字段,方法名称定义规则为get[字段大驼峰名]Attr
,如getStatusTextAttr
,数据库中有status
字段,model
类修改为:
<?php
namespace app\model;
use think\Model;
class Demo extends Model
{
public function getStatusTextAttr($value, $data){
$status = [
0 => '待审核',
1 => '正常',
99 => '删除'
];
return $status[$data['status']];
}
}
控制器调用,大驼峰命名改为下划线小写
方式:
public function model2(){
$model = new Demo();
$result = $model->find(2);
dump($result->status_text); // "待审核"
dump($result->toArray());
}
但是直接转换为数组,还是不会有status_text
字段:
如果要获取包含获取器处理的数据表中不存在的
数据属性,可以使用append
方法添加,数据表已存在的字段可以不用处理,会自动返回:
dump($result->append(['StatusText'])->toArray());
append
的属性可以是大驼峰
命名,也可以是下划线小写
方式:
dump($result->append(['status_text'])->toArray());
结果:
转载:https://blog.csdn.net/zy1281539626/article/details/110354888
查看评论