提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
更新对于Thinkphp的学习笔记,顺便练习Markdown的写的方法。
友情提示: 这是主要是有基础的同学来复习查看。
public function add(Request $request){
$user = new User();
//用户输入的数组
$buffer = $request->get();
//符合条件的数组
$data = [];
$must_keys = ['ID', 'name'];//必要信息
$unmust_keys = ['age', 'book1_ID', 'book2_ID'];//不必要信息
foreach ($must_keys as $key){//ID ,name
//逐个判断必要参数是否存在,并添加
if(array_key_exists($key, $buffer)){
$data[$key] = $buffer[$key];
}else{
return '新建信息不合法';
}
}
foreach ($unmust_keys as $key){//age,ID1,ID2
//逐个判断非必要参数是否存在,并添加
if(array_key_exists($key, $buffer)){
$data[$key] = $buffer[$key];
}
}
$res = $user->where('ID', $data['ID'])->find();
if($res){
return '用户已存在';
}else{
//写入数据库
User::create($data);
return '添加成功';
}
}
public function kill(Request $request)
{
$user = new User;
$buffer = $request->post();
$res = $user->where('ID',$buffer['ID'])->find();
if($res)
{
$name = $res['name'];
$user->where('ID',$buffer['ID'])->delete();
return '已删除'.$name;
}
else return '学生不存在';
}
public function check(Request $request){
$user = new User();
//用户输入的数组
// $request=Request::instance();同理
$buffer = $request->post();
$unmust_keys = ['name','age', 'ID1', 'ID2'];
if(!array_key_exists('ID', $buffer)){
return '更新信息不合法';
}
$data = [];
$res = $user->where('ID',$buffer['ID']);
if(!$res) return '用户不存在';
foreach ($unmust_keys as $key){
//逐个判断非必要参数是否存在,并添加
if(array_key_exists($key, $buffer)){
$data[$key] = $buffer[$key];
}
}
$user->where('ID',$buffer['ID'])->update($data);
return '更新成功';
}
find()查找出来的是第一个符合条件的数据,代码示例:
public function query(Request $request)
{
$user = new User;
$buffer = $request->post();
$res = $user->where('ID',$buffer['ID'])->find();
if($res)
return json($res);
else return '学生不存在';
}
select()返回的是所有符合条件的数据,代码示例:
public function query(Request $request)
{
$user = new User;
$buffer = $request->post();
$res = $user->where('ID',$buffer['ID'])->select();
if($res)
return json($res);
else return '学生不存在';
}
json_encode
json_decode是一对
把字符串和json来回转换
假设前端返回的数据是:
searchParams:{“ID” : “1001”}
此时想要用ID该怎么办呢?
解释一下:前端请求方式为post, r e s 读取前端传来的参数中关键字为: s e a r c h P a r a m s 的数据,此时 res读取前端传来的参数中关键字为:searchParams的数据,此时 res读取前端传来的参数中关键字为:searchParams的数据,此时res={“ID” : “1001”},字符串型的,需要把它转换成json型的,则就是第三句,此时就是 r e s [ " I D " = > " 1001 " ] 了,最后一句则就是可以直接调用 res["ID"=>"1001"]了,最后一句则就是可以直接调用 res["ID"=>"1001"]了,最后一句则就是可以直接调用res[‘ID’]查询ID对应的数值了,所以此时$value的值为1001;json_encode则是同理;
查询某个东西是否存在
假设前端传来一堆数据,其中你不确定是否存在某个数据,然后你有需要用到它,对于一个不存在的数据,加以访问是会报错的,假设你想访问$res里的ID
一般会写:if($res[‘ID’]!=null)
这是判断$res里的ID是否存在,但是这样也就访问了它了已经,如果ID不存在,则会报错;
正确写法是:if(array_key_exists(‘ID’, $res))
这样写的话,则就不会报错。
假设存在以下数据:
$data = [
0 : [ 'ID' : '1001' ]
1 : [ 'ID' : '1002' ]
]
需求,我想用ID里的数值
解决方法:
foreach($data as $key => $res)
{
balabala...
}
此时, r e s 对应的数值就是当前遍历到的键对应的数值,也就是 res对应的数值就是当前遍历到的键对应的数值,也就是 res对应的数值就是当前遍历到的键对应的数值,也就是data[0][‘ID’]等价于 r e s [ ′ I D ′ ] 的, res['ID']的, res[′ID′]的,key在这个循环里遍历的数值就是0,1。
这里访问的地址是:localhost:8080/index/index/index
其中index/index/index是个相对路径
代表php的url也就是访问路径的三级模式:模块/控制器/接口
这里特别提醒,控制器指的只是controller这个文件夹,如果想要访问其他地方的,需要经过这个地方,在其内部接口里再调用,不可以直接访问。
接口名为getBookJson
实现功能:1,若无参数传过去则把数据库里的所有书本信息输出,并且按照每页十条(可选)信息进行分页并且书本按照ID从小到大排列;
2,有参数传过去,三个参数:ID,name,publisher;这三个参数至少有一个传过去了。将符合条件的书本信息输出,并且按照每页十条(可选)信息进行分页并且书本按照ID从小到大排列;
图例:
$res=json_decode($res, true);
将其转换为json类型,详情参考本文的零碎知识点的json_encode,json_decode这一部分。
代码示例:
public function getBookJson(){
$book =new Book;
$request=Request::instance();
$res=$request->get('searchParams');
$page=$request->get('page');
$limit=$request->get('limit');
$res=json_decode($res, true);//json_decode把字符串类型翻译成json
//json_encode把数组翻译成json类型
$count=0;
if($res!=null)
{
if(array_key_exists('ID', $res))
{
$book_data =$book->where('ID',$res['ID'])->order('ID','isc')->page($page,$limit)->select();
//分页使用->page(页数, 每页记录数)实现
$count=$book->where('ID',$res['ID'])->count();
//$count返回的是总共有多少个符合条件的数据,然后把这些数据按照要求的每页记录数(page)来分页展示
}
else if(array_key_exists('name', $res))
{
$book_data =$book->where('name',$res['name'])->order('ID','isc')->page($page,$limit)->select();
//利用参数ID升序使用->order('ID', 'isc')实现,isc为升序,desc为降序
$count=$book->where('name',$res['name'])->count();
}
else
{
$book_data =$book->where('publisher',$res['publisher'])->order('ID','isc')->page($page,$limit)->select();
$count=$book->where('publisher',$res['publisher'])->count();
}
$data = [
"code" => 0,
"msg" => "",
"count" =>$count,
"data" => $book_data
];
return json($data);
}
else
{
$book_data =$book->order('ID','isc')->page($page,$limit)->select();
$count=$book->count();
$data = [
"code" => 0,
"msg" => "",
"count" =>$count,
"data" => $book_data
];
return json($data);
}
}
接口名:getUserJson
需求:1,只显示ID,name,limit
首先数据库理limit只有1,2:1代表管理员权限,2代表学生权限
2,分页(page),每页多少条(limit);
返回参数:page:页数,limit:每页多少条信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/af5d864945fa44428119cecb28d12891.png
public function getUserJson()
{
$request=Request::instance();
$res=$request->get('searchParams');
$page=$request->get('page');
$limit=$request->get('limit');
$res=json_decode($res, true);
$user =new User();
if($res!=null)
{
$para=[];
if(array_key_exists('ID',$res))
{
$para['ID']=$res['ID'];
}
if(array_key_exists('name',$res))
{
$para['name']=$res['name'];
}
if(array_key_exists('limit',$res))
{
$para['limmit']=$res['limit'];
}
$count=$user->where($res)->count();
$userdata=$user->where($res)->order('ID','isc')
->field('ID,name,limit')
->page($page,$limit)
->select();
return [
'code' =>0,
'msg' => '',
'count' => $count,
'data' => $userdata
];
}
$count=$user->count();
$userdata=$user->order('ID','isc')
->page($page,$limit)
->field('ID,name,limit')
->select();
return [
"code" => 0,
"msg" => "",
"count" => $count,
"data" => $userdata
];
// return json($data);
}
唯有总结方可巩固,唯有复习方可进步。