校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析

laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析

熱門標簽:揚州地圖標注app 青島語音外呼系統招商 山西探意電話機器人 岳陽外呼型呼叫中心系統在哪里 騰訊外呼管理系統 昭通辦理400電話 河南電銷卡外呼系統哪家強 山西回撥外呼系統 百應電話機器人服務

本文實例講述了laravel框架數據庫操作、查詢構建器、Eloquent ORM操作。分享給大家供大家參考,具體如下:

1、連接數據庫

laravel連接數據庫的配置文件位于config/database.php中,在其中connection字段中包含laravel所支持的數據庫的配置信息,可以看到其中有主機、端口、數據庫、用戶名、密碼等信息:

'mysql' => [
  'driver' => 'mysql',
  'host' => env('DB_HOST', 'localhost'),
  'port' => env('DB_PORT', '3306'),
  'database' => env('DB_DATABASE', 'forge'),
  'username' => env('DB_USERNAME', 'forge'),
  'password' => env('DB_PASSWORD', ''),
  'charset' => 'utf8',
  'collation' => 'utf8_unicode_ci',
  'prefix' => '',
  'strict' => false,
  'engine' => null,
],

其中都是引入env文件中的默認值,laravel目錄最外層有.env文件,在其中配置對應的默認值

DB_HOST=數據庫服務器地址
DB_PORT=數據庫端口
DB_DATABASE=數據庫名
DB_USERNAME=用戶名
DB_PASSWORD=密碼

2、原生SQL操作數據庫

在controller中對數據庫進行增刪改查的操作

public static function testDB(){
  //增加一條數據
  DB::insert("insert into student(name,age) values(?,?)",['sandy',19]);
  //刪除一條數據
  DB::delete('delete from student where name=?',['sandy']);
  //修改一條數據
  DB::update('update student set sex=? where name=?',['男','tory']);
  //查詢數據
  $res=DB::select('select * from student');
  //進行數據庫通用操作
  DB::statement('drop table users');
  //打印結果
  dd($res);
}

其中通過?占位符的方式進行了參數綁定,以此來防止數據庫注入攻擊,也可以通過命名綁定的方式:   

$res = DB::select('select * from users where id = :id', ['id' => 1]);

3、通過查詢構建器操作數據庫

Laravel將常用的數據庫操作封裝為接口函數提供給用戶調用,從而使數據庫操作更為便捷,這些接口就是查詢構建器(query builder)。而且通過PDO綁定的方式避免SQL注入攻擊,在使用查詢構建器時不必考慮過濾用戶輸入。

3.1、得到結果集

lavarel查詢的返回結果集合是StdClass,可以通過$res->name類似訪問對象屬性的方式訪問返回值。如果要查詢整個表使用get(),查詢表中一條數據使用first(),查詢一條數據的某個字段用value(),查詢表中所有數據的某個字段用pluck()

//get()返回表中所有數據
$res=DB::table('student')->get();
//first()返回結果集中的第一條數據
$res=DB::table('student')->where('id','1001')->first();
//value()返回一條數據中的指定字段
$res=DB::table('student')->where('id','1003')->value('name');
//pluck()返回結果集中name字段的所有值
$res=DB::table('student')->pluck('name');

當結果集中的數據過多時,可以通過分塊的方式返回結果集,chunk函數第一個參數為分塊的大小(以每塊2個數據的方式返回結果集),第二個參數為回調函數,當其返回false時就停止結果集的返回:

DB::table('student')->chunk(2,function ($res){
  foreach ($res as $user){
    var_dump($user);
    if ($user->id >=1003) return false;
  }
});

3.2、增刪改查

//增加一條數據
DB::table('student')->insert(['name'=>'李four','sex'=>'男','age'=>22]);
//增加多條數據
DB::table('student')->insert([
  ['name'=>'wang五','sex'=>'女','age'=>21],
  ['name'=>'zhao六','sex'=>'女','age'=>20],
]);
//刪除數據
DB::table('student')->where('id','>=',1006)->delete();
//刪除整個表
DB::table('student')->truncate();
//修改數據
DB::table('student')->where('id',1005)->update(['sex'=>'女','age'=>21]);
//自增increment、自減decrement,默認增1
DB::table('student')->where('id',1005)->increment('age',2);
//自增同時可以進行修改
DB::table('student')->where('id',1005)->increment('age',1,['sex'=>'女']);
//查詢指定字段
$res=DB::table('student')->select('name','age')->get();

3.3、查詢條件

通過查詢構建器的where方法可以添加數據庫查詢條件,where()接收三個參數:字段名、操作符、值,操作符如果是'='可以省略,例如查詢id>=1003的數據:

$res=DB::table('student')->where('id','>=',1003)->get();

也可以通過條件數組傳入多個限制條件,比如查詢id>=1003并且id1005:

$res=DB::table('student')->where([
  ['id','>=',1003],
  ['id','',1005]
])->get();

通過orwhere()來連接兩個并列條件,例如查詢id>=1003或者id1002的數據:

$res=DB::table('student')->where('id','>=',1003)->orwhere('id','',1002)->get();

whereBetween()查詢位于某個區間的數據:

$res=DB::table('student')->whereBetween('id',[1003,1006])->get();

when()來判斷某個查詢是否執行,例如當$order為true時,才會執行排序:

$order=false;
$res=DB::table('student')->when($order,function ($query){
  return $query->orderBy('age','desc');       //$order為true時才執行此語句
})->get();

3.4、排序、分組、限定

//orderBy對age字段升序
$res=DB::table('student')->orderBy('age','asc')->get();
//按照create_at字段進行時間排序
$res=DB::table('student')->latest('create_at')->get();
//分組
$res=DB::table('student')->groupBy('sex')->get();
//跳過一條數據后返回2條數據
$res=DB::table('student')->skip(1)->limit(2)->get();

3.5、聚合函數

laravel查詢構建器還提供了聚合函數用于操作查詢的結果集,包括count(計數)、sum(求和)、avg(平均值)、max(最大值)、min(最小值),例如求年齡平均值:

$res=DB::table('student')->avg('age');

4、Eloquent ORM

ORM是對象關系映射(Object Relational Mapping)的簡稱,是一種實現面向對象編程語言里不同類型系統的數據之間的轉換的技術,即將數據庫中的數據按照對象的形式進行組織,可以便于面向對象的程序進行數據庫操作,之前在學習mongoDB時使用過mongoose ORM組織mongoDB ,當時還沒有意識到這是orm。

Laravel內置的Eloquent ORM提供了一種便捷的方式幫助你組織數據庫數據,每張數據表都對應一個與該表進行交互的模型(Model),通過Model類,你可以對數據表進行查詢、插入、更新、刪除等操作。Eloquent ORM本質上是查詢構建器,因此上面查詢構建器所使用的方法Eloquent都可以使用。

4.1、創建Model

在app文件夾下新建model文件,每個數據庫都需要對應一個model,例如創建一個Student模板類:

namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
  //指定對應的表
  protected $table='student';
  //指定主鍵
  protected $primaryKey='id';
  //允許批量賦值的字段
  protected $fillable=['name','age'];
  //不允許批量賦值的字段
  protected $guarded=['created_at'];
}

模板類會默認對應小寫首字母末尾加s的數據庫,例如Student模板會在當前數據庫中查找students表。如果需要自定義表名,則需要重寫$table變量來指定表名。

Eloquent默認的主鍵為'id',且該字段為自增int型,如果需要自定義主鍵,可以通過$primaryKey來指定。

Eloquent默認會管理數據表的創建時間、更新時間,對應數據表中的created_at、updated_at字段,你需要在創建表時包含這兩個字段。如果不需要管理,可以令public $timestamps = false;。否則會報錯

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'

也可以自定義兩個時間為你數據庫中的字段:

const CREATED_AT = 'my_create';
const UPDATED_AT = 'my_update';

4.2、Eloquent操作數據庫

  • 新增數據有兩種方法,一是通過新建ORM實例,而是通過create方法。在使用create批量添加時,需要在模板中通過$fillable指定可以賦值的字段,也可以$guard指定不允許賦值的字段。
//新建實例并賦值、保存
$stu=new Student();
$stu->name='orm2';
$stu->save();
//create方法批量添加數據
Student::create(['name'=>'orm3','age'=>13]);

  • 刪除數據也有兩種方法,一是通過find方法刪除指定主鍵,二是通過查詢構建器:
//destroy刪除指定主鍵值
Student::destroy(1006,1007);
//通過查詢構建器刪除
Student::where('id',1008)->delete();

  • 修改數據:①通過ORM實例來修改并保存②通過查詢構建器
//通過返回Student對象進行修改
$stu=Student::find(1005);
$stu->age=21;
$stu->save();
//通過查詢構建器修改
Student::where('id',1005)->update(['age'=>22]);

  • 查找數據:
//查詢表中所有記錄
$table=Student::all();
//根據id查詢一條數據
$row=Student::find(1002);
dd($table);

當然也可以通過構建器的get()、first()來獲取數據

通過上面的增刪改查可以看出Eloquent可以使用查詢構建器的所有方法,除了增刪改查外,還有where、聚合函數等。

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • laravel5.6 框架操作數據 Eloquent ORM用法示例
  • Laravel 手動開關 Eloquent 修改器的操作方法
  • Laravel框架Eloquent ORM新增數據、自定義時間戳及批量賦值用法詳解
  • Laravel框架Eloquent ORM簡介、模型建立及查詢數據操作詳解
  • Laravel框架Eloquent ORM修改數據操作示例
  • Laravel Eloquent分表方法并使用模型關聯的實現
  • laravel7學習之無限級分類的最新實現方法
  • laravel admin實現分類樹/模型樹的示例代碼
  • 如何使用Laravel Eloquent來開發無限極分類

標簽:南陽 銅川 鎮江 黃南 寶雞 宜賓 婁底 湛江

巨人網絡通訊聲明:本文標題《laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析》,本文關鍵詞  laravel,框架,數據庫,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析》相關的同類信息!
  • 本頁收集關于laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲精品中文字幕乱码三区| 国产亚洲一二三区| av电影一区二区| 国产经典欧美精品| 精品一区二区三区香蕉蜜桃| 亚洲高清免费一级二级三级| 亚洲图片欧美色图| 日韩国产欧美在线视频| 婷婷成人综合网| 日本大胆欧美人术艺术动态| 日韩av成人高清| 奇米在线7777在线精品| 奇米影视一区二区三区小说| 韩国精品主播一区二区在线观看 | 亚洲国产高清aⅴ视频| 国产欧美日韩亚州综合| 国产精品乱人伦一区二区| 国产精品大尺度| 亚洲色大成网站www久久九九| 一区二区三区电影在线播| 亚洲国产日产av| 日韩国产精品久久| 另类小说综合欧美亚洲| 美女视频黄免费的久久| 国产一区三区三区| 国内久久婷婷综合| 国产一区不卡视频| 丁香婷婷综合色啪| 9久草视频在线视频精品| www.99精品| 色偷偷久久一区二区三区| 91成人国产精品| 紧缚奴在线一区二区三区| 免费观看在线综合| 麻豆精品新av中文字幕| 韩国女主播成人在线观看| 国产91高潮流白浆在线麻豆 | 成人av在线资源网站| 97国产一区二区| 欧美综合一区二区| 91精品婷婷国产综合久久竹菊| 欧美一区二区三区精品| 国产欧美一区二区三区在线看蜜臀| 国产色产综合产在线视频| 亚洲天堂福利av| 亚洲三级免费观看| 亚洲欧美自拍偷拍色图| 亚洲毛片av在线| 亚洲欧美在线视频观看| 五月天欧美精品| 国产成人免费高清| 欧美亚洲一区三区| wwwwxxxxx欧美| 亚洲欧美日韩国产一区二区三区| 亚洲小说春色综合另类电影| 九一九一国产精品| 一本色道久久综合狠狠躁的推荐| 欧美一级二级三级蜜桃| 国产精品看片你懂得| 亚洲va欧美va人人爽| 国产成人午夜视频| 欧美视频在线不卡| 日本一区二区三区高清不卡| 亚洲成人综合网站| 福利一区在线观看| 欧美日韩国产精品自在自线| 国产欧美一二三区| 免费视频一区二区| 色婷婷av一区二区三区gif| 91精品国产综合久久小美女 | 九一九一国产精品| 成人晚上爱看视频| 欧美一区二区视频观看视频| 国产精品久久久久久久裸模| 韩国一区二区三区| 欧美一区二区三区免费大片| 亚洲精品免费在线观看| 精品亚洲免费视频| 欧美精品99久久久**| 国产片一区二区三区| 美女诱惑一区二区| 欧美色网站导航| 亚洲青青青在线视频| 国产成人精品亚洲日本在线桃色| 日韩欧美久久久| 丝袜美腿亚洲色图| 在线观看免费亚洲| 一区二区视频免费在线观看| 成人听书哪个软件好| 日本一区二区三区在线不卡| 调教+趴+乳夹+国产+精品| 国产91精品露脸国语对白| 日韩一区在线看| 99国产欧美久久久精品| 国产精品久久久久精k8| 成人免费精品视频| 国产精品久久久久久一区二区三区| 国产v日产∨综合v精品视频| 久久久久久久国产精品影院| 精品中文字幕一区二区| 精品国产一区二区三区不卡 | 日韩黄色在线观看| 欧美性猛交一区二区三区精品 | 亚洲国产成人av网| 欧美三日本三级三级在线播放| 一区二区三区在线观看欧美| 一本到三区不卡视频| 亚洲一二三四在线观看| 7777女厕盗摄久久久| 狠狠色丁香久久婷婷综| 2欧美一区二区三区在线观看视频| 精品一区二区三区免费观看| 久久午夜国产精品| 成人国产精品视频| 国产精品国产三级国产有无不卡| 91精彩视频在线| 午夜不卡av免费| 久久久99精品久久| 91在线播放网址| 亚洲午夜免费电影| 精品久久人人做人人爽| www.久久精品| 亚洲成va人在线观看| 精品国产亚洲一区二区三区在线观看| 国产乱色国产精品免费视频| 亚洲黄色在线视频| 欧美日韩免费观看一区三区| 懂色av一区二区三区蜜臀| 一区二区欧美国产| 久久久影视传媒| 欧美伊人久久大香线蕉综合69| 久久精品国产一区二区| 亚洲欧美日韩中文字幕一区二区三区 | 蜜桃视频在线一区| 国产婷婷一区二区| 欧美猛男男办公室激情| 麻豆精品视频在线观看视频| 中文字幕乱码亚洲精品一区| 欧美视频一区二区在线观看| 国产91高潮流白浆在线麻豆| 午夜亚洲福利老司机| 久久综合狠狠综合久久激情| 欧亚洲嫩模精品一区三区| 国产在线一区观看| 亚洲aaa精品| 亚洲色图欧美激情| 久久尤物电影视频在线观看| 欧美色中文字幕| 不卡大黄网站免费看| 精品一区二区免费看| 亚洲国产精品久久一线不卡| 亚洲精品在线免费播放| 色综合一个色综合亚洲| 国产69精品久久久久毛片| 男男gaygay亚洲| 一区二区三区小说| 国产欧美日韩另类一区| 日韩欧美一级特黄在线播放| 欧美日韩在线播| 91麻豆产精品久久久久久 | 欧美日韩一区国产| 日韩三级伦理片妻子的秘密按摩| 亚洲香肠在线观看| 欧美高清hd18日本| 亚洲视频一区二区免费在线观看| 色呦呦国产精品| 狠狠狠色丁香婷婷综合激情 | 不卡在线观看av| 91豆麻精品91久久久久久| 有坂深雪av一区二区精品| 日韩精品一区二区三区swag| 欧美老女人第四色| 欧美色综合影院| 91成人在线精品| 欧美日韩一区精品| 在线观看亚洲专区| 欧美色图片你懂的| 欧美探花视频资源| 欧美色电影在线| 91精品视频网| 欧美电视剧免费观看| 精品播放一区二区| 久久人人爽人人爽| 亚洲欧洲一区二区三区| 亚洲欧美影音先锋| 亚洲电影你懂得| 七七婷婷婷婷精品国产| 久久国产精品露脸对白| 日本亚洲三级在线| 精品写真视频在线观看| 国产成人精品免费| 一本色道a无线码一区v| 欧洲一区在线电影| 日韩一区二区电影网| 久久久不卡网国产精品二区| 中文字幕在线观看不卡视频| 夜夜爽夜夜爽精品视频| 久久成人免费电影| 波多野结衣在线aⅴ中文字幕不卡| 懂色一区二区三区免费观看|