thinkphp5项目--企业单车网站(三)
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项目--企业单车网站(三)的更多相关文章
- thinkphp5项目--企业单车网站(五)
thinkphp5项目--企业单车网站(五) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(四)
thinkphp5项目--企业单车网站(四) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(二)
thinkphp5项目--企业单车网站(二) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(一)
thinkphp5项目--企业单车网站(一) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(七)
thinkphp5项目--企业单车网站(七) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了)
thinkphp5项目--企业单车网站(九)(加强复习啊)(花了那么多时间写的博客,不复习太浪费了) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicyc ...
- thinkphp5项目--企业单车网站(六)
thinkphp5项目--企业单车网站(六) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps:/ ...
- thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)
thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise ...
- thinkphp5项目--练手--企业单车网站(九)(友情链接)
thinkphp5项目--练手--企业单车网站(九)(友情链接) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Webs ...
随机推荐
- tf.slice()解释
转载:https://www.jianshu.com/p/71e6ef6c121b def slice(input_, begin, size, name=None): 其中“input_”是你输入的 ...
- 堆(Heap)-c实现
这个堆的实现采用数组存储的完全二叉树实现. 最近有点烦躁,先是跳槽到了一个外包公司,感觉2016有点坑,另外一件事就是老婆怀孕了,但是在家里没人照顾,很担心. 这个堆的实现就暂时不优化了,基本的插入, ...
- pip 出错
pip 升级到10以上出错 ImportError: cannot import name 'main' 解决方法一: 降低pip的版本号 python -m pip install pip==9.0 ...
- STM32为什么必须先配置时钟
首先,任何外设都需要时钟,51单片机,stm32,430等等,因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入. 51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以 ...
- ZOJ 2601 Warehouse Keeper
Warehouse Keeper Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origin ...
- vs解决方案里复制一个项目
首先,保证要复制的项目的整洁无垃圾文件: 然后,选“文件”/“导出模板”,起个名字: 再者,创建一个同类型的项目,这时项目模板里就会出现你刚才导出的项目了.
- Qt之pro配置多个子工程/子模块
简述 进行Qt项目开发的时候,尤其是大型项目,经常涉及多工程/多模块问题,其主要思想还是模块化,目的是为了降低程序复杂度,使程序设计.调试和维护等操作简单化. 简述 配置 效果 多工程 多模块 更多参 ...
- 怎么样才算是精通 C++?
C++是一门非常奇妙的语言.让人又爱又恨. 在知乎上看到的一个帖子.怎么样才算是精通C++,这里节选一些精彩的回复. 链接:http://www.zhihu.com/question/20201972 ...
- poj2280--Amphiphilic Carbon Molecules(扫描线+极角排序+转换坐标)
题目链接:id=2280">点击打开链接 题目大意:给出n个点的坐标.每一个点有一个值0或者1,如今有一个隔板(无限长)去分开着n个点,一側统计0的个数,一側统计1的个数,假设点在板上 ...
- POJ 2516 Minimum Cost (最小费用最大流)
POJ 2516 Minimum Cost 链接:http://poj.org/problem?id=2516 题意:有M个仓库.N个商人.K种物品.先输入N,M.K.然后输入N行K个数,每一行代表一 ...