This article brings you relevant knowledge about thinkphp, which mainly organizes some commonly used functions, including obtaining form data, setting multi-application mode, template rendering, etc., as follows Let's take a look, I hope it will be helpful to everyone.
Recommended study: "PHP Video Tutorial"
Alibaba mirror:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Laravel China mirror : composer config -g repo.packagist composer https://packagist.laravel-china.org
China Full Mirror: composer config -g repo.packagist composer https://packagist. phpcomposer.com9
In the code cloud or git download case, it is found that it cannot run without a vendor
composer install --ignore-platform-reqs
or
composer update --ignore-platform-reqs
1. Download tp6
composer create-project topthink/think tp
2. Set multi-application mode
The default method of tp6 is to enter app/controller for single-application access. If you need to do multi-application development (for example: http://***.com/admin, http://***.com/index) need to enable multi-application mode
composer requiretopthink/think-multi-app
php think build application name (for example: index or admin)
3. Template rendering
tp3: $this->display();tp5: return $this->fetch();tp6: return View::fetch('index');
tp6 lacks many dependency packages by default and needs to be downloaded
composer require topthink/think-view
Controller introduction
use think\facade\View;
4. Template jump redirection
composer require liliuwei/thinkphp-jump
Controller introduction
Header introduction: use \liliuwei\think\Jump;
Intra-class introduction: use Jump;
If an error is reported:
Check if app/config/jump.php has settings:
'dispatch_success_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html','dispatch_error_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html'
5. Get form data
Controller introduction
use think\facade\Request;$code = Request::param('code');
or
$code = input("code");
6, digital verification code
composer require topthink/think-captcha
Find the global middleware middleware.php in the application app directory file, open the code \think\middleware\SessionInit::class commented below
7. Upload image processing image
composer require topthink/think-image
8, mysql select query
##arr[k][0] = "test" This kind of indirect modification will report an error in the default returned data set, but Arrays can be operated like this 1.
db::name('ceshi')->select()->toArray();
Modify the example as shown in the picture, delete the red box in the picture, and add a line below
$resultSet = $this->connection->select($this);
return $resultSet;
$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);
The query condition needs to add 'query' => request()->param (),
Solution:
php side:
// An highlighted block$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);$new_arr = array();foreach($list as $k=>$v){$v[$k]['erji_menu'] = “案例”;$new_arr[] = $v;} // 获取分页显示$page = $list->render();// 模板变量赋值View::assign('list', $new_arr);View::assign('page', $page);
html side
{$page|raw}
Paging reference class modification
tp6\vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php
10. New data difference Compare tp5 The save method is used to update the add method is used to add tp6 save is both an update and an add add method is deleted
db::name('ceshi')->where(array('tz_id'=>$post['tz_id']))->save($users);db::name('ceshi')->save($users);
/** * 插入记录 * @access public * @param array $data 数据 * @param boolean $getLastInsID 返回自增主键 * @return integer|string */public function insert(array $data = [], bool $getLastInsID = false){ if (!empty($data)) { $this->options['data'] = $data; } return $this->connection->insert($this, $getLastInsID);}
/** * 插入记录并获取自增ID * @access public * @param array $data 数据 * @return integer|string */public function insertGetId(array $data){ return $this->insert($data, true);}
. If you can’t get it, you can only continue to search and find that there is an insertGetId that you can get. That is to say, in order to develop quickly, we usually use save to solve the problem. When we need to get the auto-incremented primary key, we change it to insertGetId
.11、tp6 高级查询and和or同时使用
tp6针对and查询和or查询有快捷方法
但是这些快捷方法会有很多局限性,当我们对数据进行一系列的复杂查询时这些快捷方法就会出现很多问题例如:
$where1[] = ["order_khname","like",'%'.$keywords.'%'];$where2[] = ["order_khqq","like",'%'.$keywords.'%'];$where3[] = ["order_khmobile","like",'%'.$keywords.'%'];$where[] = ["order_type","=",$ddzt];$list = db::name('ceshi') ->where($where) ->whereOr([$where1,$where2,$where3]) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(), ]);
这里我们想要的sql格式为:
SELECT * FROM `dc_ceshi` WHERE `order_type` = 0 and ( ( `order_khname` LIKE '%1%' ) OR ( `order_khqq` LIKE '%1%' ) OR ( `order_khmobile` LIKE '%1%' )) LIMIT 0,10
实际生成的格式为:
SELECT * FROM `dc_ceshi` WHERE `order_type` = 0 OR ( `order_khname` LIKE '%1%' ) OR ( `order_khqq` LIKE '%1%' ) OR ( `order_khmobile` LIKE '%1%' ) LIMIT 0,10
这里就可以用到闭包查询(注:这只是我学习tp6的时候遇到的问题然后在tp6文档里面找到的解决方式,直接用原生sql也是可以解决,把where条件直接改成一个自定义的字符串也可以解决,用tp5的连接方式也应该可以但是我没试)
$list = db::name('ceshi') ->where(function ($query) use ($keywords){ $query->where("order_khname","like",'%'.$keywords.'%') ->whereOr("order_khqq","like",'%'.$keywords.'%') ->whereOr("order_khmobile","like",'%'.$keywords.'%'); }) ->where($where) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(),]);
这时候得到sql格式为:
SELECT * FROM `dc_ceshi` WHERE ( `order_khname` LIKE '%1%' OR `order_khqq` LIKE '%1%' OR `order_khmobile` LIKE '%1%' ) AND `order_type` = 0 LIMIT 0,10
已经满足了我的需求,但是还是有一个问题就是如果keywords这个变量没有值的时候他查询的语句格式为:
SELECT * FROM `dc_ceshi` WHERE ( `order_khname` LIKE '%%' OR `order_khqq` LIKE '%%' OR `order_khmobile` LIKE '%%' ) AND `order_type` = 0 LIMIT 0,10
这种情况只需要在加个if判断:
$list = db::name('ceshi') ->where(function ($query) use ($keywords){ if($keywords){ $query->where("order_khname","like",'%'.$keywords.'%') ->whereOr("order_khqq","like",'%'.$keywords.'%') ->whereOr("order_khmobile","like",'%'.$keywords.'%'); } }) ->where($where) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(),]);
12、tp6 find查询变动
tp5、tp3我们查询一个表是否存在数据可以直接查询一条
$datafind = db::name('ceshi')->find();
tp6 find查询必须增加where条件或者order排序,为什么不知道。有大神知道指点下O(∩_∩)O哈哈~
$datafind = db::name('ceshi')->order('ID DESC')->find();
推荐学习:《PHP视频教程》
The above is the detailed content of Summarize the common functions of thinkphp6. For more information, please follow other related articles on the PHP Chinese website!