thinkphp5项目--企业单车网站(三)

项目地址

fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Website
https://github.com/fry404006308/BicycleEnterpriseWebsite

一、动态查询

thinkphp支持动态查询,这就很方便了,可以根据自己功能或者用户查询自由查找

所以thinkphp功能应该很全,很多时候我可能需要多去找,有很多我不知道的功能

还有很多操作需要自己多用多敲才能会,不管多么复杂和难的,敲着敲着就特别简单了

动态查询

支持动态查询方法,例如:
// 根据name字段查询用户
$user = User::getByName('thinkphp');
// 根据email字段查询用户
$user = User::getByEmail('thinkphp@qq.com');
 动态调用:

 $user = new User;
$user->count();
$user->where('status','>',0)->count();
$user->where('status',1)->avg('score');
$user->max('score');

二、模型的两种使用方法

以查询为例:

1、直接在控制器中调用模型对象或者模型的静态方法查找数据库数据

2、在模型中通过方法查找好数据,然后在控制器中调用

1、直接在控制器中调用模型对象或者模型的静态方法查找数据库数据

 <?php
namespace app\admin\controller;
use think\Controller;
use app\admin\model\Admin as ModelAdmin; class Admin extends Controller
{
// //初始胡方法
// public function _initialize(){
// $modelAdmin= new ModelAdmin();
// } //列表页
public function lst()
{
$data=ModelAdmin::select();
dump($data);die;
return view('list');
}

2、在模型中通过方法查找好数据,然后在控制器中调用

模型

     public function getAdmin(){
return $this->select();
}

控制器

     public function lst()
{
$modelAdmin= new ModelAdmin();
$data=$modelAdmin->getAdmin();
dump($data);die;
return view('list');
}

注意调用方法是->,老是写成java中的.(点)

三、增删改查的业务逻辑

(1)、增加

  1、在控制器中获取页面表单数据然后传到数据库

 //增加页
public function add()
{
if(request()->isPost()){
//获取post提交的数据
$data=input('post.');
//模型处理获取的数据
$modelAdmin= new ModelAdmin();
//结果
$res=$modelAdmin->addAdmin($data); // $res=db('admin')->insert($data);
if($res){
$this->success('添加管理员成功!!',url('admin/lst'));
}else{
$this->error('添加管理员失败!!');
}
return;
}
return view();
}

(2)、删除

   1、在页面通过链接将用户id传给控制器

 <a href="#" onClick="warning('确实要删除吗', '{:url('admin/delete',array('id'=>$vo['id']))}')" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a>

   2、在控制中处理然后在数据库中删除这个特定id的用户

 //删除页
public function delete(){
//获取从页面传入的管理员id
$data=input('id');
//模型处理获取的数据
$modelAdmin= new ModelAdmin();
$res=$modelAdmin->deleteAdmin($data);
if($res){
$this->success('删除管理员成功!!',url('admin/lst'));
}else{
$this->error('删除管理员失败!!');
}
}

(3)、修改

  修改操作好像是删除操作和增加操作的一个综合体,步骤比较像删除操作+增加操作

  1、在页面通过链接将用户id传给控制器

 <a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">
<i class="fa fa-edit"></i> 编辑
</a>

  2、在数据库中查询数据显示到修改页面

 /**part2**/
//获取界面传过来的id
$id=input('id');
//根据id查询数据
$modelAdmin= new ModelAdmin();
$data=$modelAdmin->findAdmin($id);
// dump($data);die;
//将数据传递到修改界面
$this->assign('data',$data);

  3、在控制器中获取页面修改好的表单数据然后传到数据库

         /**part3**/
//判断是否为用户post提交
if(request()->isPost()){
$data1=input('post.');
// dump($data1);die;
// 将修改好的数据传入到数据库
$res=$modelAdmin->editAdmin($data1);
if($res){
$this->success('修改管理员成功!!',url('admin/lst'));
}else{
$this->error('修改管理员失败!!');
}
}

(4)、查询

  1、从数据库中查询数据然后分配给页面

 //列表页
public function lst()
{
// $data=ModelAdmin::select();
$modelAdmin= new ModelAdmin();
$data=$modelAdmin->getAdmin();
$this->assign('data',$data);
return view('list');
}

三、thinkphp中引用自己的bootstrap分页样式

1、新增分页php页面,修改分页代码

2、修改配置文件

文件名字改的话就是该'type'=>'bootstrap',,如果你重写的样式是aaa.php,这里就弄成'type'=>'aaa',就好

四、部分字段更新

在更新数据的时候我们可能需要部分字段更新,比如密码为空表示不修改的情况

 //密码字段为空说明不修改密码
return $this->allowField(['username'])->save($data,['id']);

上面的代码是在模型中,表示只允许修改username字段,并且是根据id来修改

1、传数组进去修改的方法很棒

2、thinkphp模型中的方法和数据库中的方式有些是互通的

3、allowField用于部分字段更新

4、用save的时候直接返回成功或者失败的条数(0,1等),用update的时候就是一堆其它的

5、allowField只对save有效,对update无效

五、没必要所有的数据库操作都通过模型

没必要所有的数据库操作都通过模型,有些很简单不用处理数据的就直接在控制器就好

比较一下下面两种根据id查找管理员信息的方法

1、直接控制器中:

$data=db('admin')->find($id);

2、通过模型:

在控制中代码

 /**part2**/
//获取界面传过来的id
$id=input('id');
//根据id查询数据
$modelAdmin= new ModelAdmin();
$data=$modelAdmin->findAdmin($id);
// dump($data);die;
//将数据传递到修改界面
$this->assign('data',$data);

模型中代码

     /**
* 根据管理员id查找数据
* @param [type] $id [description]
* @return [type] [description]
*/
public function findAdmin($id){
$data=$this->find($id);
// dump($data);die;
return $data;
}

一个通过助手函数一行代码,一个19行代码还容易错,不用太规矩,怎么简单怎么来,怎么方便自己,方便大家怎么来。

六、field关键词取部分数据

比如当我们表单不需要显示密码的时候,我们可以不取密码,当然也可以取了不显示

$date=db('admin')->field('id,username')->find($id);

比如文章表里面,用不到的时候可以指定不用取文章,不然浪费服务器性能太大了

七、关于注释

不是所有的方法都需要写注释,有一些非常非常非常见名知意的方法就不用写啊,比如add,delete,edit,,或者说不用写那么详细

因为注释的作用是方便你,方便大家,怎么简单方便怎么来

关于算法步骤,这个一定要写,这个写了之后思路特别清晰,效率非常高

thinkphp5项目--企业单车网站(三)的更多相关文章

  1. thinkphp5项目--企业单车网站(五)

    thinkphp5项目--企业单车网站(五) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  2. thinkphp5项目--企业单车网站(四)

    thinkphp5项目--企业单车网站(四) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  3. thinkphp5项目--企业单车网站(二)

    thinkphp5项目--企业单车网站(二) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  4. thinkphp5项目--企业单车网站(一)

    thinkphp5项目--企业单车网站(一) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  5. thinkphp5项目--企业单车网站(七)

    thinkphp5项目--企业单车网站(七) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  6. thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了)

    thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicyc ...

  7. thinkphp5项目--企业单车网站(六)

    thinkphp5项目--企业单车网站(六) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...

  8. thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)

    thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise ...

  9. thinkphp5项目--练手--企业单车网站(九)(友情链接)

    thinkphp5项目--练手--企业单车网站(九)(友情链接) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Webs ...

随机推荐

  1. 【BZOJ4487】【JSOI2015】染色问题

    题意: 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格.现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定:  1.  棋盘的每一个小方格既可以染色(染成C种颜色中 ...

  2. UVA-1331 Minimax Triangulation 区间dp 计算几何 三角剖分 最大三角形最小化

    题目链接:https://cn.vjudge.net/problem/UVA-1331 题意 给一个任意多边形,把它分为多个三角形. 求某方案中最大的三角形是各方案中最小的面积的三角形面积. 思路 学 ...

  3. 《鸟哥的Linux私房菜》读书笔记--第0章 计算机概论 硬件部分

    一个下午看了不少硬件层面的知识,看得太多太快容易忘记.于是在博客上写下读书笔记. 有关硬件 个人计算机架构&接口设备 主板芯片组为“南北桥”的统称,南北桥用于控制所有组件之间的通信. 北桥连接 ...

  4. vue-quill-editor-upload : 实现vue-quill-editor上传图片到服务器

    vue-quill-editor-upload git: https://github.com/NextBoy/vu... A plug-in for uploading images to your ...

  5. 洛谷 P4147 玉蟾宫 (最大子矩形问题)

    这道题用到了悬线法,非常牛逼,可以看这个论文. https://blog.csdn.net/twtsa/article/details/8120269 #include<cstdio> # ...

  6. Qt之图形(QPainter的基本绘图)

    简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...

  7. HDOJ 5296 Annoying problem LCA+数据结构

    dfs一遍得到每一个节点的dfs序,对于要插入的节点x分两种情况考虑: 1,假设x能够在集合中的某些点之间,找到左边和右边距离x近期的两个点,即DFS序小于x的DFS序最大点,和大于x的DFS序最小的 ...

  8. 图文介绍MyEclipse (2015) 中创建简单的Maven项目的步骤(用于生成可运行jar文件)

    利用MyEclipse的引导,能够非常方便的创建简单的.用于生成可运行jar文件的Maven项目: (原创文章,转载请注明转自Clement-Xu的博客:http://blog.csdn.net/cl ...

  9. 使用quick自己定义Button

    使用quick时自己封装的类存放于特定的文件夹.便于以后使用 以下是作者经经常使用到的一个按钮 local MyButton = class("MyButton") functio ...

  10. powershell输出错误信息到文件

    https://stackoverflow.com/questions/8925323/redirection-of-standard-and-error-output-appending-to-th ...