婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Laravel中的查詢構造器實現增刪改查功能

使用Laravel中的查詢構造器實現增刪改查功能

熱門標簽:高德地圖標注家 哪里辦理400電話 怎么向銷售公司推銷外呼系統 江西手機自動外呼防封系統是什么 廣東地市地圖標注 仁和怎么申請400開頭的電話 外呼系統撥打暫時無法接通 廣州防封卡外呼系統多少錢一個月 長春人工外呼系統服務商

引言

上一篇介紹了如何在windows環境下跑一個 laravel 項目,這一篇寫如何使用 laravel 中的 查詢構造器 實現增刪改查。

讀這篇文章時我默認你已擁有如下知識:

  • 了解php的基礎語法
  • 了解數據庫設計
  • 了解常用的sql查詢

正文

實現增刪改查前, 我們先準備一些步驟:

  • php, nginx, mysql 服務正確啟用
  • 新建一個數據庫及其數據表

開啟服務我們打開上篇文章介紹的 Wnmp.exe -> Start all

然后cmd上鍵入命令:

D:/wnmp/Wnmp/php/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/Wnmp/php/php.ini

新建一個數據庫, 我命名為 shop , 然后新建兩張表

分別:

goods -> 商品表 user -> 用戶表

數據表新建完成后, 我往里面隨意插入了幾條數據, 下圖:

準備步驟已經完成, 我們打開上篇文章介紹的 testLaravel 項目

查看Laravel文檔能夠知道 數據庫配置config/database.php 里,

因為我們是mysql數據庫, 所以找到對應的mysql選項:

查看 database.php 文件的mysql配置我們能夠看到配置值是 變量 , 指向的是項目根目錄的 .env 文件

打開 .env 文件, 我們填寫對應的mysql真實配置, 下圖:

配置大家看對應的key值就知道是什么含義了, 這里提下數據庫密碼, 為什么是 password 呢? 查看Wnmp安裝目錄, 我們能看到有一個 readme.txt 的文件, 文件的文本內容如下:

Copyright (c) 2012 - 2019, Kurt Cancemi (kurt@x64architecture.com)
Donations are appreciated no matter if big or small.
https://wnmp.x64architecture.com/donate/

Wnmp is an easy Nginx, MariaDB and PHP environment for Windows.

The default login for MySQL/MariaDB/phpMyAdmin is: 
username: root
password: password

Note: you can change it via phpMyAdmin

根據文件內容 我們知道了密碼是: password , 因為是本地開發環境 這里就不更改密碼了,

但如果是生產環境, 大家使用集成環境包的時候一定要變更數據庫密碼.

另外文中沒有介紹項目的具體目錄結構, 建議大家看下官方文檔, 熟悉一下.

到這里項目的數據庫配置就已經配完了, 關聯了本地的 shop 數據庫.

現在我們需要配置一下 路由 , 所有的 Laravel 路由 的配置都在根目錄的 routes 里, routes 目錄中有4個路由配置文件, 這里不談其中區別, 只關注 web.php , 后面所有路由我們都在此文件里追加.

看到這里的同學也建議看一下 laravel 的路由文檔, 因為文中講的不是很細, 傳送門:

https://learnku.com/docs/lara...

順便一說, 我個人選擇 laravel 作為深入學習的php框架, laravel優雅的路由是我選擇它的一個重要原因.

我這里先寫幾個路由, 大家感受一下:

Route::get('test/queryUsers',['uses' => 'TestController@queryUsers']);
Route::post('test/queryUsers',['uses' => 'TestController@queryUsers']);
Route::get('test/queryUsers/{id}',['uses' => 'TestController@queryUsers']);

Route::match(['get','post'],'test/queryUsers',['uses' => 'TestController@queryUsers']);
Route::any('test/queryUsers',['uses' => 'TestController@queryUsers']);

我們知道熟知的http請求方式有 getpost 兩種.

a. 我們來依次解析上面的路由, 先看第1條:

Route::get('test/queryUsers',['uses' => 'TestController@queryUsers']);

此路由指定了 get 方式請求, 路由為 test/queryUsers , 邏輯會走向 TestController 控制器的 queryUsers 方法

這里出現了兩個名詞 控制器方法

注: laravel是一個 mvc框架 , 關于 mvc 的理解需要自己查些資料看看.

查詢

控制器在項目里的 App/Http/Controllers 目錄里, 這里我新增一個 TestController 控制器, TestController 里新增一個 queryUsers 方法:

?php

namespace App\Http\Controllers;
use app\Member;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Routing\Annotation\Route;

class TestController extends Controller
{
 public function queryUsers() {
 $users = DB::table('user')->get();
 return $users;
 }
}

我們先來看結果, 地址欄鍵入(域名 + 路由): http://test.lara.com/test/queryUsers :

代碼里很亮眼的一行:

DB::table('user')->get();

這行代碼表示查詢 shop數據庫 user 表的全部數據, 所以我們看到 user 表中的3條記錄都被返回了.

b. 現在我們來解析上面路由的第2條:

Route::post('test/queryUsers',['uses' => 'TestController@queryUsers']);

這條路由和第1條路由只有一個 post 的區別, 沒錯, 這是一個post請求的路由, 我們知道post請求方式無法在瀏覽器地址欄鍵入路由來得到結果, 所以我們需要使用一個工具 Postman , 這是個好東西, 如果有同學沒用過或是不知道它, 建議查一下熟悉一下, 文中不介紹它.

現在我們在 Postman 新建一個請求, 如圖:

我們點擊 send 得到 :

納尼?怎么沒有得到我們期望的結果, 很顯然哪里不對,我們再來看看路由的文檔:

https://learnku.com/docs/lara...

文檔中我查找與 post 字眼的相關馬跡, 看到:

原來是 CSRF 造成的, 無論是前端同學還是后端同學, 應該都對這個詞不陌生, 跨站請求偽造

laravel 中為了解決 CSRF 這個隱患, 默認有保護機制, 我們需要配置 CSRF 白名單 , 根據文檔, 我們知道 CSRF 白名單 的配置在 VerifyCsrfToken 中間件里, VerifyCsrfToken 中間件所在路徑:

App/Http/Middleware/VerifyCsrfToken.php

打開文件, 添加 CSRF 白名單 ,

protected $except = [
 'http://test.lara.com/test/queryUsers',
 ];

完成這步后我們再打開 postman, 點擊 send 可以看到數據如期望返回:

c. 現在我們來解析上面路由的第3條:

Route::get('test/queryUsers/{id}',['uses' => 'TestController@queryUsers']);

可以看出這條路由的區別在于路由末尾的 {id} , 開發中我們會有這樣的需求, 前端傳遞一個用戶id, 后端返回這個id對應的該用戶信息

此時需要修改下 TestController 控制器 queryUsers 方法:

public function queryUsers() {
 $id = request()->id; // 此種方式獲取參數
 $users = DB::table('user')->where('id', $id)->get();
 return json_encode($users);
 }

白話文解釋一下這條sql: 在table表里查詢id = $id(路由傳遞的值)的記錄,

查看結果, 符合預期:

d. 現在我們來解析上面路由的第4條和第5條:

Route::match(['get','post'],'test/queryUsers',['uses' => 'TestController@queryUsers']);
Route::any('test/queryUsers',['uses' => 'TestController@queryUsers']);

這倆路由我就不演示了, 分別解釋一下, match 里路由為指定的請求方式, 一種或多種,

any 則是匹配任意方式, 無論是通過 get 還是 post 方式請求, 都能得到我們想要的結果.

我們再看看上面我設計的goods表

我們能看到這兩條數據不知道創建的用戶是誰, 但是有uid值, 這時候我們希望一個接口既返回商品信息又能夠讓我知道創建者是誰, 此時就需要用到多表聯查了, 我們新增一個路由:

Route::get('test/queryGoods',['uses' => 'TestController@queryGoods']);

然后 TestController 里新增一個 queryGoods 方法:

public function queryGoods() {
 $goods = DB::table('goods')
   ->leftJoin('user', 'goods.uid', '=', 'user.id')
   ->get();
 return json_encode($goods);
 }

如期望一樣返回數據:

[{
 id: 1,
 uid: 1,
 name: "測試商品1",
 desc: null,
 img_urls: null,
 price: "99.00",
 old_price: "78.00",
 real_name: "陳云",
 nickname: "窮搖.",
 head_url: null,
 age: null,
 gender: null,
 level: null
 },
 {
 id: 2,
 uid: 2,
 name: "測試商品2",
 desc: null,
 img_urls: null,
 price: "290.00",
 old_price: "389.00",
 real_name: "歐陽欣欣",
 nickname: "小欣欣",
 head_url: null,
 age: null,
 gender: null,
 level: null
 }
]

但是用戶信息所有字段全部被返回了, 有些時候我們為了安全, 只需要返回指定字段, 比如我們只需要返回 user 表中的 real_namehead_url 字段, 那么我們就需要做一下字段的約束:

public function queryGoods() {
 $goods = DB::table('goods')
   ->leftJoin('user', 'goods.uid', '=', 'user.id')
   ->select('goods.*', 'user.real_name', 'user.head_url')
   ->get();
 return json_encode($goods);
 }

關注下這行代碼:

select('goods.*', 'user.real_name', 'user.head_url')

這行代碼表示返回goods表中的 所有字段 以及user表中的 real_namehead_url 字段, 就完美達到了我們想要的結果.

新增

至此查詢已經基本寫的差不多了, 我們開始向數據表里 新增 數據

我們新增一個 post 請求的路由 test/addUser :

Route::post('test/addUser',['uses' => 'TestController@addUser']);

添加 CSRF 路由白名單

protected $except = [
 'http://test.lara.com/test/queryUsers',
 'http://test.lara.com/test/addUser',
 ];

然后 TestController 里新增一個 addUser 方法:

public function addUser() {
 $real_name = request()->real_name;
 $nickname = request()->nickname;

 DB::table('user')->insert(
  ['real_name' => $real_name, 'nickname' => $nickname]
 );

 $users = DB::table('user')->get();
 return json_encode($users);
 }

打開 postman , 添加參數:

{"real_name":"劉亦菲","nickname":"小菲菲"}

點擊send, 發現數據如期望一樣正確插入.

查詢構造器提供 insert 方法用于插入記錄到數據庫中。 insert 方法接收數組形式的字段名和字段值進行插入操作

DB::table('user')->insert(
  ['real_name' => $real_name, 'nickname' => $nickname]
 );

編輯

我們新增一個 put 請求的路由 test/updateUser :

同樣添加 CSRF

Route::put('test/updateUser',['uses' => 'TestController@updateUser']);

路由白名單

protected $except = [
 'http://test.lara.com/test/queryUsers',
 'http://test.lara.com/test/addUser',
 'http://test.lara.com/test/updateUser',
 ];

然后 TestController 里新增一個 updateUser 方法:

public function updateUser() {
 $id = request()->id;
 $nickname = request()->nickname;
 
 DB::table('user')
  ->where('id', $id)
  ->update(['nickname' => $nickname]);

 $users = DB::table('user')->get();
 return json_encode($users);
 }

打開 postman , 我們知道剛剛新增的記錄返回的 劉亦菲 的id是4, 我們根據 id 來更新下它的 nickname , postman 里添加請求參數:

{"id":"4", "nickname": "小阿菲~"}

點擊send, 發現數據如期望一樣正確更新.

查詢構造器提供 update 方法用于更新已有的記錄。 接受包含要更新的字段及值的數組

->where('id', $id)->->update(['nickname' => $nickname]);

刪除

我們新增一個 delete 請求的路由 test/deleteUser :

Route::delete('test/deleteUser',['uses' => 'TestController@deleteUser']);

同樣添加 CSRF 路由白名單

protected $except = [
 'http://test.lara.com/test/queryUsers',
 'http://test.lara.com/test/addUser',
 'http://test.lara.com/test/updateUser',
 'http://test.lara.com/test/deleteUser',
 ];

然后 TestController 里新增一個 deleteUser 方法:

public function deleteUser() {
 $id = request()->id;

 DB::table('user')
  ->where('id', $id)
  ->delete();

 $users = DB::table('user')->get();
 return json_encode($users);
 }

打開 postman , 我們現在想把 劉亦菲 的記錄在數據庫里刪掉, 我們知道她的 id 是 4, 我們根據 id 來刪除它, 添加請求參數:

{"id":"4"}

點擊send, 發現數據如期望一樣正確刪除 (已經沒有id為4的記錄).

laravel中查詢構造器可以使用 delete 方法從表中刪除記錄。添加 where 子句來約束 delete 的條件:

->where('id', $id)->delete();

文章有很多方法沒有介紹到, 建議需要學習的同學看下文檔, 傳送門:

https://learnku.com/docs/lara...

總結

以上所述是小編給大家介紹的使用Laravel中的查詢構造器實現增刪改查功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • Laravel框架DB facade數據庫操作詳解
  • Laravel5.7 數據庫操作遷移的實現方法
  • PHP開發框架Laravel數據庫操作方法總結
  • Laravel5中實現模糊匹配加多條件查詢功能的方法
  • laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法
  • 解決laravel查詢構造器中的別名問題
  • Laravel 5框架學習之Eloquent (laravel 的ORM)
  • 詳解PHP的Laravel框架中Eloquent對象關系映射使用
  • Laravel 5框架學習之Eloquent 關系
  • Laravel Eloquent ORM 實現查詢表中指定的字段
  • Laravel5.7 Eloquent ORM快速入門詳解
  • laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析

標簽:湘西 惠州 文山 廈門 黔東 濮陽 梅河口 海北

巨人網絡通訊聲明:本文標題《使用Laravel中的查詢構造器實現增刪改查功能》,本文關鍵詞  使用,Laravel,中的,查詢,構造,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Laravel中的查詢構造器實現增刪改查功能》相關的同類信息!
  • 本頁收集關于使用Laravel中的查詢構造器實現增刪改查功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    首页国产欧美日韩丝袜| 亚洲人快播电影网| 欧美一区二区三区电影| 欧美日韩国产美| 一本色道久久综合精品竹菊 | 在线电影欧美成精品| 欧美色精品在线视频| 欧美网站一区二区| 欧美日韩久久不卡| 5月丁香婷婷综合| 日韩欧美在线影院| 久久久三级国产网站| 国产欧美日韩另类一区| 18欧美乱大交hd1984| 一区二区三区在线视频免费| 亚洲一区二区三区四区在线观看 | 国产精品毛片久久久久久久| 1000精品久久久久久久久| 日韩欧美一二三| 国产日韩欧美电影| 亚洲欧洲日韩女同| 亚洲小说春色综合另类电影| 美腿丝袜亚洲综合| 成人av片在线观看| 欧美性色综合网| 26uuu欧美日本| 亚洲女爱视频在线| 日本一不卡视频| 成人污视频在线观看| 欧美三级日本三级少妇99| 精品国产一区久久| 亚洲欧美日韩国产综合在线| 久久电影网电视剧免费观看| 成人爱爱电影网址| 精品少妇一区二区三区在线播放 | 狠狠色丁香婷婷综合| 99久久亚洲一区二区三区青草| 欧美日本高清视频在线观看| 久久久一区二区| 日韩av二区在线播放| 成人污污视频在线观看| 欧美一级淫片007| 洋洋av久久久久久久一区| 国产麻豆午夜三级精品| 欧美群妇大交群中文字幕| 国产日韩欧美激情| 久久91精品国产91久久小草| 欧美日韩免费观看一区二区三区 | 婷婷中文字幕一区三区| 粉嫩嫩av羞羞动漫久久久| 欧美精品乱人伦久久久久久| 中日韩免费视频中文字幕| 日韩精品免费专区| 在线观看国产日韩| 亚洲人成7777| 国产a久久麻豆| 久久久99久久| 麻豆freexxxx性91精品| 欧美精品丝袜久久久中文字幕| 亚洲精品乱码久久久久久黑人 | 亚洲一区二区三区精品在线| 成人免费看视频| 日韩免费电影网站| 亚洲www啪成人一区二区麻豆| fc2成人免费人成在线观看播放 | 在线精品视频免费播放| 亚洲色图欧洲色图| www.成人网.com| 国产清纯白嫩初高生在线观看91| 蜜乳av一区二区| 日韩三级精品电影久久久| 偷拍一区二区三区四区| 在线不卡免费欧美| 性欧美疯狂xxxxbbbb| 色域天天综合网| 亚洲综合在线观看视频| 在线观看日韩高清av| 一区二区三区在线免费播放| 在线影院国内精品| 亚洲成av人片一区二区梦乃 | 国产精品丝袜久久久久久app| 国产一区二区三区在线观看免费视频 | 精品国产一区二区国模嫣然| 免费在线观看不卡| 欧美v国产在线一区二区三区| 久久超碰97中文字幕| 久久久欧美精品sm网站| 国产成人免费视| 亚洲女厕所小便bbb| 欧美日韩激情在线| 国产在线观看免费一区| 国产精品久久免费看| 91小宝寻花一区二区三区| 亚洲成av人片www| 26uuu亚洲婷婷狠狠天堂| 成人h动漫精品一区二区| 亚洲精品免费视频| 欧美一二三在线| k8久久久一区二区三区| 亚洲国产精品一区二区www| 欧美一区二区三区在线观看视频| 韩国欧美国产1区| 一区二区三区欧美视频| 日韩亚洲欧美一区二区三区| 成人av第一页| 日本亚洲三级在线| 亚洲私人黄色宅男| 欧美大片一区二区| 91久久精品日日躁夜夜躁欧美| 日本欧美一区二区三区乱码| 国产精品久久久久久亚洲伦| 欧美日本视频在线| 99在线视频精品| 精品一区二区三区在线播放视频| 亚洲欧洲精品天堂一级 | 成人亚洲一区二区一| 亚洲地区一二三色| 欧美韩国日本一区| 日韩视频在线观看一区二区| 91丝袜国产在线播放| 久久99在线观看| 亚洲愉拍自拍另类高清精品| 国产日韩欧美一区二区三区乱码| 欧美日韩夫妻久久| 91啪亚洲精品| 高清不卡一二三区| 国产精品一级黄| 日韩1区2区3区| 亚洲国产精品精华液网站| 国产精品久99| 国产精品少妇自拍| 26uuuu精品一区二区| 欧美一级在线视频| 欧美高清视频一二三区| 欧美在线一区二区三区| 色婷婷av一区二区三区大白胸| 国产白丝网站精品污在线入口| 日韩福利视频导航| 婷婷国产v国产偷v亚洲高清| 亚洲一区二区欧美日韩| 亚洲卡通动漫在线| 亚洲美女偷拍久久| 亚洲欧美日韩小说| 亚洲激情五月婷婷| 亚洲精品一二三四区| 亚洲天堂中文字幕| 亚洲激情图片一区| 一区二区在线电影| 一区二区三区波多野结衣在线观看| 国产精品视频在线看| 欧美国产视频在线| 亚洲人快播电影网| 午夜婷婷国产麻豆精品| 五月天中文字幕一区二区| 午夜精品一区二区三区电影天堂 | 日韩成人免费看| 美女性感视频久久| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩欧美一级二级三级| 日韩精品资源二区在线| 日韩午夜中文字幕| 久久久精品日韩欧美| 国产精品视频看| 一区二区三区四区不卡在线 | 国精产品一区一区三区mba视频| 精品亚洲国产成人av制服丝袜| 国产乱人伦偷精品视频不卡| 从欧美一区二区三区| 色狠狠一区二区三区香蕉| 91.com视频| 久久久国产精品麻豆| 国产精品久久久久一区二区三区| 亚洲激情图片小说视频| 美女一区二区久久| 99久久精品免费看| 欧美一区二区精品久久911| 国产视频视频一区| 午夜av区久久| 国产成人综合精品三级| 日本高清不卡视频| 久久天堂av综合合色蜜桃网| 亚洲欧美在线视频观看| 青青青爽久久午夜综合久久午夜| 粗大黑人巨茎大战欧美成人| 欧洲另类一二三四区| 久久久久久久久久久久电影| 亚洲视频中文字幕| 精品一区二区三区香蕉蜜桃 | 欧美精品色一区二区三区| 国产亚洲成aⅴ人片在线观看 | 自拍偷拍国产亚洲| 裸体在线国模精品偷拍| 91亚洲永久精品| 精品久久久久久久久久久久包黑料| **网站欧美大片在线观看| 国内国产精品久久| 欧美一级久久久久久久大片| 一区二区三区四区在线| av在线播放不卡| 国产欧美精品在线观看|