Rumah > Artikel > rangka kerja php > Ringkaskan fungsi umum thinkphp6
Artikel ini membawa anda pengetahuan yang berkaitan tentang thinkphp, yang terutamanya mengatur beberapa fungsi yang biasa digunakan, termasuk mendapatkan data borang, menetapkan mod berbilang aplikasi, pemaparan templat, dll., seperti berikut Mari kita lihat, Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Cermin Ali: konfigurasi komposer -g repo.packagist komposer https://mirrors.aliyun.com/composer/
Cermin Laravel China : konfigurasi komposer -g repo.packagist komposer https://packagist.laravel-china.org
Imej penuh China: composer config -g repo.packagist composer https:/ /packagist. phpcomposer.com9
Dalam kes muat turun awan kod atau git, didapati tiada vendor dan ia tidak boleh dijalankan
pemasangan komposer --ignore-platform-reqs
atau
kemas kini komposer --ignore-platform-reqs
1 Muat turun tp6
ciptaan komposer-. projek topthink/think tp
2. Tetapkan mod berbilang aplikasi
Kaedah lalai tp6 ialah memasukkan aplikasi/pengawal untuk akses aplikasi tunggal -pembangunan aplikasi (contohnya: http://***.com/admin, http://***.com/index) perlu mendayakan mod berbilang aplikasi
composer requiretopthink/think-multi -app
nama aplikasi binaan php think (contohnya: indeks atau pentadbir)
3 Penyampaian templat
tp3: $this->display();tp5: return $this->fetch();tp6: return View::fetch('index');
tp6 tidak mempunyai banyak pergantungan. pakej secara lalai dan perlu dimuat turun
komposer memerlukan topthink/think-view
Pengenalan Pengawal
gunakan thinkfacadeView;
4 lompat semula
komposer memerlukan liliuwei/ thinkphp-jump
Pengenalan Pengawal
Pengenalan pengepala: gunakan liliuweithinkJump;
Jika ralat dilaporkan:Semak sama ada app/config/jump.php mempunyai tetapan:
'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. Dapatkan data borang Pengenalan pengawal
use think\facade\Request;$code = Request::param('code');Atau
$code = input("code");
6 Kod pengesahan digital komposer memerlukan topthink/think-. captcha
7 🎜> komposer memerlukan topthink/think-image
8 pertanyaan pilih mysql
dialihkan daripada tp5. tatasusunan dimensi, dan tp6 mengembalikan set data Walaupun pegawai berkata pada dasarnya tiada perbezaan daripada operasi tatasusunan
<.>arr [k][0] = "test" Jenis pengubahsuaian tidak langsung ini akan melaporkan ralat dalam set data yang dikembalikan secara lalai, tetapi tatasusunan boleh dikendalikan seperti ini 1. 2
Ubah suai BaseQuery. php /vendor/topthink/think-orm/src/db dalam direktori tp6
db::name('ceshi')->select()->toArray();
$resultSet = $this->connection->select($this);
9 , Penomboran
return $resultSet;
Gunakan kaedah penomboran untuk mendapatkan data penomboran, dan tanya nilai subskrip yang tidak boleh ditambahkan pada koleksi
Syarat pertanyaan perlu menambah 'query' => request()- >param(),$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);
Penyelesaian:
sisi php:
sisi html{$page|raw}// 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);
Pengubahsuaian kelas rujukan halaman
tp6vendortopthinkthink-ormsrcpaginatordriverBootstrap php
10 Perbezaan data baharu Bandingkan kaedah simpan tp5 untuk mengemas kini kaedah tambah untuk Tambah Simpanan tp6 adalah mengemas kini dan menambah kaedah telah dipadamkan .
Tambahkan kunci utama Jika kunci utama tidak ditambah, akan ada masalah jika pelaksanaannya berjaya dikembalikan.
Tidak. Seperti kaedah tambah tp5, ia mengembalikan id kunci utama data yang ditambahkan
db::name('ceshi')->where(array('tz_id'=>$post['tz_id']))->save($users);db::name('ceshi')->save($users);
Walaupun ulasan mengatakan bahawa ia mengembalikan kunci utama kenaikan automatik, saya masih tidak mendapat kunci utama kenaikan automatik semasa saya menguji di sini, saya tidak pasti sama ada masalah versi atau sesuatu belum jumpa, anggap saja saya tidak sebut
/** * 插入记录 * @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);}dan jika anda tidak dapat, anda hanya boleh terus mencari dan mendapati terdapat insertGetId yang anda boleh dapatkan. Maksudnya, untuk membangunkan dengan cepat, kami biasanya menggunakan save untuk menyelesaikan masalah Apabila kami perlu mendapatkan kunci utama auto-incremented, kami menukarnya kepada 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视频教程》
Atas ialah kandungan terperinci Ringkaskan fungsi umum thinkphp6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!