Php laravel 留言板 curd 實戰

1. 項目創建

首先我們用composer創建項目 , composer會根據當前的php版本 幫我們選擇支持的最高版本

composer create-project --prefer-dist laravel/laravel myblog

laravel新版本比較激進 ,需要最低 php7 支持

2. 項目配置 數據庫配置 ,時區配置 ,路由配置等等

項目配置主要在根目錄下的 .env 文件中

主要是數據庫配置 ? 和 redis的配置?

//數據庫配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
//redis配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

注意 config / app.php 文件 ,改時區,一般默認是PRC

'timezone' => 'PRC',

3. 留言板增刪改查? ?

public function addsave(Request $request){$postdata = $request->all();//驗證數據$rules = ['title' => 'required|unique:dw_msg|max:100',  /*此處規則為必須  標題唯一,驗證器會到dw_msg里找   最長長度為100個字符*/'content' => 'required|max:100',];$validator = Validator::make($postdata, $rules);if ($validator->fails()) {return redirect('error')->withErrors($validator)->withInput();}else{$u = json_decode(json_encode(Session::get('userinfo')[0]),true);$res = DB::insert('insert into dw_msg (title,content,uid,time) values (:title,:content,:uid,:time)', ['title'=>$postdata['title'],'content'=>$postdata['content'],'uid'=>$u['uid'],'time'=>time() ]);if($res){return redirect('/');}else{echo 'insert  data  fails';exit();}}}

這里主要介紹添加數據這個操作 。

這里使用到 ?接收參數的Request包 ? , 驗證數據的Validator包 ?和 數據庫DB包 ?和 會話控制包 Session ?,分別需要在頭部引入

use Illuminate\Http\Request; //默認導入的包
use Illuminate\Support\Facades\Validator;
use DB;  //等同于 use Illuminate\Support\Facades\DB;
use Session;

可以看到類中大量導入 Illuminate\Support\Facades? ? 這個命名空間下的類 。

Facades 是 laravel 中比較核心的類庫 ,包括諸如 session ,DB,Route 等等底層類

4. 分頁

laravel中實現分頁也比較簡單

$results = DB::table('dw_msg')->orderBy('id','desc')->paginate(8);
return view('msg.index', ['list'=>$results]);

視圖頁碼顯示:

{{$list->links()}}

默認顯示樣式:

還有一種是 ?simplePaginate(15); ? ? 這種只顯示上一頁 和下一頁

5. 登錄模塊 和 session 的使用

$res = DB::select('select * from dw_user where username = :u', ['u' => $postData['username']]);
$tmp = json_decode(json_encode($res),true);
$md_for_pass = set_passwords($postData['password'],$tmp[0]['salt']);
if($tmp[0]['password']== $md_for_pass){Session::put('userinfo',$res);Session::save();echo 'login success';exit();
}else{echo 'login fail';exit();
}

對象轉換數組的方法:

$tmp = json_decode(json_encode($res),true);

一般DB類查詢數據 ,都會返回 ?stdclass 對象 ? ,可直接使用 ?,可轉換使用

6. 加入驗證碼

驗證碼使用composer引入第三方的類

composer require "gregwar/captcha 1.*"

控制器:

namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Gregwar\Captcha\CaptchaBuilder;
use Session;class codeController extends Controller
{public function captcha($temp){$builder = new CaptchaBuilder();$builder->build(100,32);$phrase = $builder->getPhrase();//把內容存入sessionSession::flash('milkcaptcha', $phrase); //存儲驗證碼ob_clean();return response($builder->output())->header('Content-type','image/jpeg');}}

視圖使用:

驗證碼:<img src="/getcode/1" alt="點擊刷新" onclick="this.src='/getcode/'+ Math.random();"  style="cursor:pointer" align="absmiddle"/> 

參考:laravel自帶驗證碼類的使用 - 程序員大本營

7. redis的使用

composer導入:

composer require predis/predis

首先需要引入

use Illuminate\Support\Facades\Redis;try{Redis::set('key','value123123');$value = Redis::get('key');echo $value;
}catch (\Exception $e){//返回服務器內部錯誤 500 的響應碼echo $e->getMessage();
}

8. model層的使用

namespace App;use Illuminate\Database\Eloquent\Model;class dw_msg extends Model
{//protected $table="dw_msg";protected $primaryKey = "id";protected $fillable = ['title', 'content', 'uid',];public $timestamps = false;
}
 

1.?protected $table="dw_msg" ? ??默認規則是模型類名的復數作為與其對應的表名,除非在模型類中明確指定了其它名稱?

??

2. protected $primaryKey = "id";??默認每張表的主鍵名為id ,你可以在模型類中定義一個$primaryKey 屬性來覆蓋該約定

3.?protected $fillable? ?用于調用create() ?方法時候 的白名單。 如圖定義了?'title', 'content', 'uid' 字段

4.?public $timestamps = false;??默認情況下,Eloquent 期望created_at 和updated_at 已經存在于數據表中,如果你不想要這些 Laravel自動管理的列,在模型類中設置$timestamps 屬性為false

常見的增刪改查方法,具體可查看線上手冊

//獲取所有記錄
$flights = Flight::all();// 獲取匹配查詢條件的第一個模型...
$flight = App\Flight::where('active', 1)->first();//插入數據
$flight = new Flight;
$flight->name = $request->name;
$flight->save();//更新數據
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();//刪除
$deletedRows = App\Flight::where('active', 0)->delete();

9.要注意的幾個問題

? ??? ??

? ? 9.1 ?公共函數如何添加

? ? 1.在app/Helper/下新建functions.php 文件?

? ? 2.?打開項目根目錄下的 composer.json 文件,找到"autoload" 配置項,補充如下代碼:

"files":["app/Helper/functions.php"]

? ??

? ?3. 在根目錄執行?

composer dump-auto

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77401.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP 壓力測試工具autocannon(AI)

簡介 autocannon 是一款基于 Node.js 的高性能 HTTP 壓力測試工具&#xff0c;適用于評估 Web 服務的并發處理能力和性能瓶頸。 一、工具特點 高性能?&#xff1a;利用 Node.js 異步非阻塞機制模擬高并發請求?。?實時監控?&#xff1a;測試過程中動態展示請求統計和性能…

LVM 擴容詳解

目錄 一、LVM擴容 1. 查看磁盤分區情況&#xff1a; 2. 查看pv、vg、lv 情況 3. 將新硬盤分區初始化 4. 將初始化后的分區添加到VG中 5. 查看邏輯卷的設備路徑 6. VG分配給lv 二、擴展文件系統 1.確認文件系統類型 三、檢驗 一、LVM擴容 1. 查看磁盤分區情況&#xff1a; …

每日一題(小白)數組娛樂篇21

由于題意可知我們是要將對應的數字轉換為英文&#xff0c;我們要考慮兩點一個是進制的轉換&#xff0c;也就是類似于我們的十進制一到9就多一位&#xff0c;這里的進制就是Z進制也就是27進制一旦到26下一位則進位&#xff1b;另一方面要考慮數字的轉換也就是1~26對應A~Z。解決上…

python爬蟲:喜馬拉雅案例(破解sign值)

聲明&#xff1a; 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 根據上一篇文章&#xff0c;我們破解了本網站的&#xff0c;手機號和密碼驗證&#x…

深入探討:Spring 如何接入 DeepSeek?

?在當今數字化浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技術的迅猛發展深刻地改變著各個領域的技術格局。Java 作為一種廣泛應用于企業級開發的編程語言&#xff0c;其生態系統也在不斷演進以適應 AI 技術的融入。Spring 框架&#xff0c;作為 Java 生態中的中流…

VSCode運行,各類操作緩慢,如何清理

VSCode寫代碼&#xff0c;隨著項目逐步進展&#xff0c;代碼量在增加&#xff0c;依賴的第三方頭文件也在增加&#xff0c; 先是發現代碼提示的速度變慢&#xff0c; 后來格式化代碼速度太慢 然后c/c代碼的語法檢查有時候壓根就失敗&#xff0c;來個錯誤提示 還有source contro…

Elasticsearch:加快 HNSW 圖的合并速度

作者&#xff1a;來自 Elastic Thomas Veasey 及 Mayya Sharipova 過去&#xff0c;我們曾討論過搜索多個 HNSW 圖時所面臨的一些挑戰&#xff0c;以及我們是如何緩解這些問題的。當時&#xff0c;我們也提到了一些計劃中的改進措施。本文正是這項工作的成果匯總。 你可能會問…

人事|人事管理系統|基于Springboot+vue的人事管理系統設計與實現(源碼+數據庫+文檔)

人事管理系統 目錄 基于Springboot的人事管理系統設計與實現 一、前言 二、系統功能設計 三、系統實現 1、管理員登錄 2、員工管理 3、公告信息管理 4、公告類型管理 5、培訓管理 6、培訓類型管理 四、數據庫設計 1、實體ER圖 五、核心代碼 六、論文參考 七、最新…

2.4GHz射頻前端噪聲系數優化架構

2.4GHz射頻前端電路架構由信號處理鏈路、硬件模塊及性能規范構成&#xff0c;其系統組成與參數要求如下&#xff1a; 一、信號發射鏈路? 數字基帶信號通過DAC轉換為模擬信號? 調制電路將信號加載至本地振蕩器生成的2.4GHz載波? 功率放大器將信號強度提升至20-25dBm范圍? …

開源 LLM 應用開發平臺 Dify 全棧部署指南(Docker Compose 方案)

開源 LLM 應用開發平臺 Dify 全棧部署指南&#xff08;Docker Compose 方案&#xff09; 一、部署環境要求與前置檢查 1.1 硬件最低配置 組件要求CPU雙核及以上內存4GB 及以上磁盤空間20GB 可用空間 1.2 系統兼容性驗證 ? 官方支持系統&#xff1a; Ubuntu 20.04/22.04 L…

Trae AI 保姆級教程:從安裝到調試全流程指南

Trae AI 保姆級教程&#xff1a;從安裝到調試全流程指南 Trae AI 是字節跳動推出的一款 AI 原生集成開發環境(IDE)&#xff0c;專為中文開發者設計&#xff0c;集成了 Claude 3.5 和 GPT-4o 等先進 AI 模型&#xff0c;支持通過自然語言交互實現代碼生成、項目構建與調試。本教…

博物館小程序怎么做?從0到1打造數字化文化窗口

博物館小程序怎么做&#xff1f;從0到1打造數字化文化窗口 一、行業痛點&#xff1a;傳統博物館的數字化困局 在數字化浪潮下&#xff0c;傳統博物館普遍面臨三大挑戰&#xff1a; ??客流受限??&#xff1a;線下接待能力有限&#xff0c;難以觸達更廣泛人群 ??互動單一…

基于 Netty 框架的 Java TCP 服務器端實現,用于啟動一個 TCP 服務器來處理客戶端的連接和數據傳輸

代碼&#xff1a; package com.example.tpson_tcp;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; imp…

深入解析原生鴻蒙中的 RN 日志系統:從入門到精通!

全文目錄&#xff1a; 開篇語&#x1f4d6; 目錄&#x1f3af; 前言&#xff1a;鴻蒙日志系統究竟有多重要&#xff1f;&#x1f6e0;? 鴻蒙 RN 日志系統的基礎結構&#x1f4dc; 1. 日志的作用?? 2. 日志分類 &#x1f527; 如何在鴻蒙 RN 中使用日志系統&#x1f58b;? 1…

算法訓練營Day01(二分 雙指針)

704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 關于二分查找 最重要的是要處理好邊界問題&#xff0c;每次寫完邊界可以帶入特殊值進行測試確定區間的不變量是什么&#xff1f;比如區間的左閉右閉&#xff0c;和左閉右開&#xff0c;每次二分完的新區間&#xff0c;一…

shadcn 使用步驟與注意點

目錄 一、shadcn ui 二、使用流程 1.安裝 2.顏色與主題 3.引用blocks 三、使用注意點 四、推薦搭配工具 五、總結 一、shadcn ui 官網&#xff1a;Build your component library - shadcn/ui 為何選擇它&#xff1f;因為它是一個基于 Tailwind CSS Radix UI 的組件集…

STM32CubeMX-H7-12-IIC讀寫MPU6050模塊(中)-MPU6050模塊詳解以及軟件IIC驅動

前言 上一篇我們已經完成對IIC代碼基本框架的編寫&#xff0c;以及獲取MPU6050的ID&#xff0c;接下來我們逐一分析這個模塊的功能&#xff0c;并用IIC驅動 建議看完上一篇再來看這篇 MPU6050寄存器介紹 1.電源管理寄存器&#xff08;PWR_MGMT_1&#xff0c;地址&#xff1a;0…

量子計算模擬中的GPU加速:從量子門操作到Shor算法實現

一、量子模擬的算力困境與GPU破局 量子計算模擬面臨?指數級增長的資源需求?&#xff1a;n個量子比特的態向量需要2^n個復數存儲空間。當n>30時&#xff0c;單機內存已無法承載&#xff08;1TB需求&#xff09;。傳統CPU模擬器&#xff08;如Qiskit的Aer&#xff09;在n28…

spring mvc 異常處理中@RestControllerAdvice 和 @ControllerAdvice 對比詳解

RestControllerAdvice 和 ControllerAdvice 對比詳解 1. 基本概念 注解等效組合核心作用ControllerAdviceComponent RequestMapping&#xff08;隱式&#xff09;定義全局控制器增強類&#xff0c;處理跨控制器的異常、數據綁定或全局響應邏輯。RestControllerAdviceControll…

JavaScript的回調函數:異步編程的基石

引言 在JavaScript的世界里&#xff0c;回調函數是一種強大而基礎的編程模式&#xff0c;它是異步編程的核心概念之一。隨著Web應用程序變得越來越復雜&#xff0c;理解和掌握回調函數變得尤為重要。本文將深入探討JavaScript回調函數的概念、應用場景以及最佳實踐。 什么是回…