<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-3.路由、模型與數據庫操作 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-1.工具和本地環境 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-2.啟動項目 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-3.路由、模型與數據庫操作 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-4.跨域且傳輸數據,并優化后端接口 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-5.用戶登錄(一),密碼的bcrypt(hash)加密與驗證 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-6.用戶登錄(二),token驗證 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-7.分類的模型關聯和通用CRUD接口 > 技能學習:學習使用php(tp6框架) + vue.js,開發前端全棧網站-8.使用mavoneditor(vue的markdown編輯器),并批量上傳圖片 ###### 1.URL訪問 在多應用模式下,URL的訪問地址定義如下: ~~~ http://serverName/index.php/應用/控制器/操作/參數/值... ~~~ 在上篇文章我們使用url重寫方法,將index.php隱藏,所以URL訪問地址為: ~~~ http://serverName/應用/控制器/操作/參數/值... ~~~ 根據上篇文章創建的admin端為例: ![](https://img.kancloud.cn/95/6c/956cfbc40bb9f8066f4eab21a356be88_742x486.png) 此時查看路由設置: ![](https://img.kancloud.cn/c3/69/c369d636c1a28b935919bef09da9d9f9_753x1007.png) thinkphp框架給控制器和操作設置了默認值,這也是我們不輸入控制器名和操作名就可以訪問頁面的原因: ![](https://img.kancloud.cn/e9/e6/e9e69c9ddc829e718bbed50b0b3d73c9_356x149.png) 最官方的訪問方法應該是: ~~~ localhost:3000/admin/index/index ~~~ 可能是自動查找index操作的原因,輸入此段url會報錯: ![](https://img.kancloud.cn/cb/44/cb44eb51813fab97260658f3bd9e54b1_616x222.png) 所以,輸入到控制器就結束,控制器會自動查找默認操作名index: ![](https://img.kancloud.cn/2a/75/2a75523f0ea9f811b594798185a405b5_377x123.png) 如果我們想訪問其他操作,可以定義操作名和操作方法: ![](https://img.kancloud.cn/8a/8e/8a8e01d966951ebf826fcbf681ca97fc_637x380.png) 此時,URL訪問不輸入操作名就會跳轉到默認操作index,需要訪問hello操作就要帶上hello操作名: ![](https://img.kancloud.cn/1f/71/1f7163ef3c03ef058ba0ca93d9792716_409x126.png) ###### 2.路由與強制路由 (1)多應用模式下的路由定義: 以admin應用為例,創建route文件夾,內部新建文件app.php。 ![](https://img.kancloud.cn/0d/af/0daf337f4b8e040e692a93dd5667c077_189x255.png) 編寫admin應用路由: a.只要是php文件,必須有`<?php ?>`引用文本,后半段`?>`可不寫。 b.thinkphp框架需要對每一個功能模塊進行命名空間定義,這樣才能通過命名空間使用控制器訪問該模塊下的方法。 c.使用路由模塊需要通過命名空間引入路由模塊的方法。 ![](https://img.kancloud.cn/a3/5f/a35f3be1969ab16880789e08d66b4d10_422x143.png) 此時,使用路由方法定義路由: ~~~ // 自定義訪問地址 // 控制器/操作 Route::get('/', 'index/index'); ~~~ ![](https://img.kancloud.cn/78/61/78619a5f2c5a7da840c4a778ccef2e4f_346x179.png) 此時,訪問admin應用,自動跳轉到該方法: ![](https://img.kancloud.cn/73/99/7399ba0c7d56ca3f4754ad6cf7159731_390x133.png) 再定義hello方法: ![](https://img.kancloud.cn/bf/ab/bfab94a6759b7d7af4fb3e34c402a2dc_474x188.png) ![](https://img.kancloud.cn/fc/98/fc9859d13f8f5414e006db4416234014_384x121.png) (2)全局路由定義 thinkphp的一切功能的運行順序都是從內到外: ![](https://img.kancloud.cn/25/1e/251e633c11c6f8943a8fbd0b1c26c3fb_343x888.png) 在admin應用中定義的路由,url訪問需要加admin: localhost:3000/admin 而如果我們想要訪問域名的同時直接跳轉到web應用,就可以使用全局路由: ![](https://img.kancloud.cn/5a/0f/5a0f631460202007b8d338504fd1b9ba_621x486.png) 此時直接訪問域名,失敗: ![](https://img.kancloud.cn/69/14/691498ab192983c9a7d276b631e21ebb_597x190.png) 在網上查詢原因,開啟多應用模式下,全局路由應該只可以返回數據,而不能解決url定向問題,解決方法應該在全局設置config/app.php修改默認應用名: ![](https://img.kancloud.cn/ed/a7/eda7f1aa7a1c236ccd8cc2ab0f2d5645_1459x1073.png) 測試: ![](https://img.kancloud.cn/f8/03/f8038456b5d92a6847f61466a0d7c197_373x134.png) (3)強制路由 我比較喜歡使用thinkphp的強制路由方法。此方法可以提高網站的安全性。 修改路由配置: ![](https://img.kancloud.cn/25/98/259871095d2617c3701713422c62ad90_1459x1073.png) 此時,刷新頁面,找不到該頁面了: ![](https://img.kancloud.cn/52/5f/525f67b7e0cd38d184bf1768c195a302_661x216.png) 強制路由的作用是,網站只能訪問我們已經定義好的路由,沒有定義的路由地址網站無法訪問。 所以要想訪問該地址,就必須在路由中寫入該地址: ![](https://img.kancloud.cn/05/1b/051ba00acfa52ef7a89010994ef6fbea_731x393.png) 再次刷新頁面就可以訪問了: ![](https://img.kancloud.cn/a1/8b/a18b616ab81058f6fe1ed756dd99827e_294x121.png) 同時,在admin應用為例,我們此時只可以通過localhost:3000/admin訪問應用,如果攜帶控制器名和操作名同樣無法進行訪問: ![](https://img.kancloud.cn/2a/bb/2abb0b9f869383892110760f3073e4f3_368x219.png) ![](https://img.kancloud.cn/35/0c/350c9964c75d326e79204e934d586f2b_620x229.png) 也就是說,強制路由狀態下,我們將其設置為如何顯示,就只能通過這種方法進行顯示。 ###### 3.模型 掌握路由之后,就可以通過路由進行數據接口的設置,但在此之前,我們需要學習數據模型。 每個數據模型代表一個數據表,通過數據模型上傳數據到數據庫的表中。 (1)創建模型 我們以admin為例,創建一個管理員模型Admin.php文件。 ![](https://img.kancloud.cn/96/57/96579d8c2d248070d23c62ac79844b6e_685x427.png) 模型名會對應數據庫中的數據表名,采用首字母大寫的駝峰命名法。如果模型名為AdminModel,則對應的數據表名就應該為admin\_model。 此時我們定義的模型名為Admin,那么數據庫中的數據表就應該為admin。 (2)連接數據庫并新建數據表 打開navicat,新建一個數據庫。 ![](https://img.kancloud.cn/17/c2/17c295f87ad3cd3d9c5904c2bbee2002_486x549.png) 連接測試: ![](https://img.kancloud.cn/ff/4e/ff4ea552cd3862d269253252f1c3a2ae_486x549.png) 在連接中右鍵新建數據庫: ![](https://img.kancloud.cn/61/ff/61ffa3e82c2c7f2ac5368fc18097c124_456x399.png) 確定,雙擊mine-php數據庫,新建表,根據模型名,定義表名為admin。 ![](https://img.kancloud.cn/d1/1c/d11cfaecb8d2d1e2d9b29b4ba9eb8a2c_761x528.png) ctrl+s保存輸入表名admin,確定: ![](https://img.kancloud.cn/09/b8/09b819280ba731edd68f330d078e3b6c_980x669.png) ![](https://img.kancloud.cn/c9/e8/c9e85a6f6404d20fb126fd02c5ce855b_537x238.png) 回到Admin.php模型,設置字段內容: ~~~ <?php namespace app\admin\model; use think\Model; class Admin extends Model{ // 設置字段信息 protected $schema = [ 'id' => 'int', 'username' => 'string', 'password' => 'string', ];} ~~~ ![](https://img.kancloud.cn/81/9c/819c9c1430bd183c088ca50ba85e5605_533x330.png) ###### 4.數據庫操作模型 (1)新增數據 在admin應用中編寫新增數據方法add(): ~~~ public function add() { $admin = new Admin; $admin->save([ 'username' => 'admin', 'password' => '123456' ]); return '新增數據成功'; } ~~~ ![](https://img.kancloud.cn/f9/21/f9219c7007c8558fcfff8b1957b12755_701x589.png) 定義新增數據路由: ![](https://img.kancloud.cn/3f/38/3f380b5fd53f8253232df825fb511f56_443x218.png) 頁面輸入接口連接測試: ![](https://img.kancloud.cn/d3/90/d39050167cee0515b623478da493ccb3_406x120.png) 刷新查看數據庫表: ![](https://img.kancloud.cn/60/6f/606f1df1ada431d2a31b07c75239b9d3_459x112.png) 插入成功。 為之后操作測試做鋪墊,再插入兩條數據: ![](https://img.kancloud.cn/57/13/571366c12cf945e0178693444d821fb8_304x193.png) (2)查找數據 * 查找全部數據 ~~~ public function find_all() { $admins = Admin::select(); dump($admins->toArray()); } ~~~ ![](https://img.kancloud.cn/c3/41/c34190d754e3674c88b24e837a294afa_594x600.png) 添加路由: ![](https://img.kancloud.cn/f6/19/f619c6cfc34628a9efa234261a1c1cf5_542x230.png) 網頁測試: ![](https://img.kancloud.cn/f0/c4/f0c4bb89e57fe55a315746ff5e472f32_470x407.png) 也可以通過查詢構造器方法進行查詢: ~~~ public function findAll() { $admins = Admin::select(); dump($admins->toArray()); dump('______分界線______'); $list = Admin::where('password', '123456')->limit(2)->order('id', 'asc')->select(); foreach($list as $key=>$admin){ echo $admin->name; } } ~~~ ![](https://img.kancloud.cn/a6/28/a628e714578807106d17e427fe0334b5_1370x623.png) 網頁測試: ![](https://img.kancloud.cn/fb/14/fb1404258ff3cca573d9dea8859c70f2_415x552.png) * 查找單條數據 ~~~ public function find() { $admins = Admin::find(2); dump($admins->toArray()); } ~~~ ![](https://img.kancloud.cn/60/20/60201ef89553ebd180172055223bdfe3_517x765.png) 添加路由: ![](https://img.kancloud.cn/d2/fa/d2fafc830d9b31b7e0f884af86362e6e_497x267.png) 網頁測試: ![](https://img.kancloud.cn/d2/8b/d28b6e55dd39365b4f627bd38bc897d8_374x184.png) 也可以通過使用查詢構造器查詢滿足條件的數據: ~~~ public function find() { $admins = Admin::where('username', '八方設計')->find(); dump($admins->toArray()); } ~~~ ![](https://img.kancloud.cn/05/ba/05bac5b464b118e4c10cbc50376f1eec_459x166.png) (3)更新數據 更新數據的過程就是先查找再更新。 也就是上面兩種方法的合并: ~~~ public function update() { // 查找單條數據 $admin = Admin::where('username', '最強的森')->find(); // 定義修改值并保存 $admin -> password = "666666"; $admin -> save(); } ~~~ 添加路由: ![](https://img.kancloud.cn/ea/c9/eac9fb18286d5bbbb16b355050663f40_488x271.png) 網頁測試,本次沒有return返回結果,但沒有報錯就是成功了: ![](https://img.kancloud.cn/b3/50/b350cf79b1ed7208ab3ef4611bda4023_415x142.png) 刷新navicat查看: ![](https://img.kancloud.cn/95/03/950323c35634df837c5ab36b8ef494f1_427x189.png) 以上方法算是查詢構造器方法。 修改方法也可以使用靜態方法直接查找字段進行更新: ~~~ // 靜態方法直接更新 $admin = Admin::update(['password' => '111111'], ['username' => '八方設計']); return '修改數據成功'; ~~~ ![](https://img.kancloud.cn/f4/b7/f4b7052543b4609887943f649efff7c1_814x268.png) 可以進行批量更新數據,大家自行測試: ~~~ $admin= new User; $data= [ // 修改id為1的字段 ['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'], // 修改id為2的字段 ['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com'] ]; $admin->saveAll($data); ~~~ (4)刪除數據 刪除方法也比較靈活: a.先查找再刪除: ~~~ $admin = Admin::find(1); $admin->delete(); ~~~ b.根據主鍵刪除: ~~~ Admin::destroy(1); // 支持批量刪除多個數據 Admin::destroy([1,2,3]); ~~~ c.條件刪除: ~~~ Admin::destroy(function($query){ $query->where('id','>',10); }); // 或 Admin::where('id','>',10)->delete(); ~~~ 我就不一個一個測試了,中和三類方法制作一個構造器查詢在刪除: ~~~ public function delete() { // 查找 $admin = Admin::where('username', 'admin')->find(); $admin->delete(); return '刪除數據成功'; } ~~~ ![](https://img.kancloud.cn/88/f8/88f8b6bf4bda2e4ae947a1e95bad48db_424x137.png) navicat刷新查看: ![](https://img.kancloud.cn/26/22/26227cb51b1f0fef798928e161dd03f4_345x157.png) 到此路由、模型與數據庫的操作到此學習完。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看