定义/设置 模型
定义一个和数据库表对应的模型文件
在app文件夹下新建model文件夹,在创建php类,取名要和表名,如表名为tp_user模型取名为User,表名为tp_user_name模型取名为UserName
--php
namespace app\model;
use think\Model;
// 字段设置
// 模型的数据字段和数据库表字段是对应关系 默认会自动获取 包括字段的类型
// 但是自动获取会导致增加一次查询 在模型组设置字段信息 可以减少内存开销
// protected $schema = [
// 'id' => 'int',
// 'name' => 'string',
// 'age' => 'int',
// 'details' => 'string',
// ]
// 但是设置的字段 只对模型有效 对DB::name()无效 所以一般不单独设置字段 而是开启缓存
// 在config/database.php中开启缓存字段 fields_cache => true 然后再根目录 执行命令行 php think optimize:schema, 会生成一个runtime/cache
// 如果开启了缓存 每次新增字段 都要执行 php think optimize:schema 更新缓存!!!!!
// 废弃字段 由于某些原因 表里的某些字段不想再使用了 可以在模型里设置
// 如不想使用 details字段
// protected $disuse = ['details'];
// 设置只读字段
// protected $readonly = ['name'];
class User extends Model
{
// 初始化模型的一些操作
public static function init()
{
// echo 'init2222';
}
protected $disuse = ['details'];
// protected $readonly = ['name'];
// 配置获取器 在别的页面(控制器使用的时候会默认加上这个函数的行为)
// getStatusAttr get + 字段名(首字母大写 可以是任何字段) + Attr
public function getStatusAttr($value, $data)
{
// $data 所有的数据 var_dump($data);
$status = [0 => '禁用', 1 => '启用', 2 => '待审核', 10 => '已删除'];
return $status[$value];
}
// 配置获取器 在别的页面(控制器使用的时候会默认加上这个函数的行为)
// setStatusAttr set + 字段名(首字母大写 可以是任何字段) + Attr
public function setStatusAttr($value, $data)
{
// $data 所有的数据 var_dump($data);
return $value + 1;
}
}
在控制器里使用
use app\model\User;
class Login extends BaseController
{
public function index()
{
$user = User::select();
return $user;
}
}
添加数据
public function add()
{
$user = new User();
$user->name = 'thinkphp11111';
$user->age = 11;
$user->details = '23232323232';
$user->sex = '女';
$user->save();
}
更新数据
public function update()
{
// 根据主键查找
// $user = User::find(1);
// 条件查找
// $user = User::where('id', 1)->find();
// $user->name = 'thinkphp1';
// save只会更新有变化的数据,如果没有变化的数据,不会更新
// 如果想强制更新数据, 可以用force()方法
// echo $user->force()->save();
// 使用Db::raw() 执行sql函数
// $user = User::find(1);
// $user->age = Db::raw('age + 2');
// $user->save();
// 批量修改 不会新增 只会主键修改存在的数据
// saveAll() 返回被修改的数据集合
// $user = new User();
// return $user->saveAll([
// ['id' => 1, 'name' => 'thinkphp1'],
// ['id' => 2, 'name' => 'thinkphp2'],
// ['id' => 3, 'name' => 'thinkphp3'],
// ]);
// User::update()
$user = new User();
// return $user->update([ 'id' => 1, 'name' => 'thinkphp3' ]);
// id放后面 返回数据不包含id
// return $user->update(["name" => 'thi3333'], ["id" => 1]);
// 限制更新的内容 只允许details被修改
return $user->update(["details" => '男', 'age' => 32], ["id" => 1], ['details']);
}
查询数据
public function select()
{
// 查询单个数据
// $user = User::find(1);
// return json($user);
// 查询全部
// $user = User::select();
// 查询多个数据
// $user = User::select([1, 2, 3]);
// 条件查询
// $user = User::where('id', 1)->select();
// $user = User::where('id', '<', 2)->select();
// 筛选3条
// $user = User::limit(4)->select();
// 按照排序返回 desc 降序 asc 升序
// $user = User::order('age', 'desc')->select();
// 先按照 age 字段排列,如果遇到 age 相同的情况,则按照 id 字段排列。
$user = User::order(['age' => 'asc', 'id' => 'desc'])->select();
return json($user);
}