Larave5.*框架 資料庫的CURD增刪改查操作教程
Laravel提供了3種操作資料庫方式:DB facade(原始方式)、查詢構造器和Eloquent ORM。下面我將逐一講解。
資料庫的配置檔案在config目錄下的database.php裡。開啟這個檔案,找到MySQL的配置項。
這裡有個env,它其實是呼叫了laravel根目錄下的.env檔案,這個檔案儲存了資料庫的配置資訊。開啟它。修改為專案的資料庫資訊即可。
請自行建一個數據庫,其中資料庫得包含vipinfo表,並且插入一些資料,以方便下面使用。表的結構如下圖。
一、資料庫操作之DB facade
在app->Http->Controllers目錄下新建一個控制器StudentController.php。
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Support\Facades\DB;
- class StudentController extends Controller {
- }
在Student控制器裡新增一個test1方法,查詢用的是DB類的靜態方法select(),引數是原生的sql語句,返回的是一個二維陣列。dd()是laravel提供的方法,可以將一個數組以節點樹的形式展示出來。具體程式碼如下:
-
public
- {
- $student=DB::select("select * from userinfo");
- //返回一個二維陣列 $student
- var_dump($student);
- //以節點樹的形式輸出結果
- dd($student);
- }
URL訪問:http://localhost/laravel/public/index.php/test1 ,則會打印出結果。
2.新增操作
新增使用的是DB類的靜態方法insert(),第一個引數是sql語句,第二個引數是一個數組,數組裡放要插入的資料。這裡?是佔位符,通過資料庫介面層pdo的方式,達到防sql注入的目的。返回的是執行的結果。插入成功則返回true,否則為false。
- $bool=DB::insert("insert into vipinfo(vip_ID,vip_name,vip_type,vip_fenshu)
- values(?,?,?,?)",[5,'小明','出行',670]);
- var_dump($bool);
- //新增成功則返回true。
更新使用的是DB類的靜態方法update(),第一個引數是sql語句,第二個引數是一個數組,數組裡的元素分別對應sql語句裡的問號。更新成功返回true。
- $bool=DB::update('update vipinfo set vip_fenshu= ? where vip_ID= ? ',[700,5]);
- var_dump($bool); //更新成功返回true
刪除使用的是DB類的靜態方法delete(),第一個引數是sql語句,第二個引數是一個數組,數組裡的元素分別對應sql語句裡的問號。返回的是刪除的行數。
- $num=DB::delete('delete from vipinfo where vip_ID= ?',[5]);
- echo$num;
二、資料庫操作之查詢構造器
laravel查詢構造器提供了方便流暢的介面,用來建立及執行資料庫查詢語法。使用了pdo引數繫結,使應用程式免於sql注入,因此傳入的引數不需要額外轉義特殊字元。基本上可以滿足所有的資料庫操作,而且在所有支援的資料庫系統上都可以執行。
1.使用查詢構造器實現增刪改查
(1)新增
$bool=DB::table("vipinfo")->insert(['vip_ID'=>6,'vip_name'=>'zls','vip_type'=>"出行",'vip_fenshu'=>800]);
echo $bool; //返回bool值
//如果想得到新增的id,則使用insertGetId方法
$id=DB::table("vipinfo")->insertGetId(['vip_ID'=>5,'vip_name'=>'wyp','vip_type'=>"出行",'vip_fenshu'=>800]);
echo $id;
//插入多條資料
$bool=DB::table("vipinfo")->insert([
['vip_ID'=>5,'vip_name'=>'wyp','vip_type'=>"出行",'vip_fenshu'=>800],
['vip_ID'=>6,'vip_name'=>'zls','vip_type'=>"出行",'vip_fenshu'=>800],
]);
echo $bool; //返回bool值
(2)修改
$bool=DB::table("vipinfo")->where('vip_ID',6)->update(['vip_fenshu'=>500]);
echo $bool;
//自增
$bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu");//自增1
$bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu",3);//自增3
echo $bool;
//自減
$bool=DB::table("vipinfo")->where('vip_ID',6)->decrement("vip_fenshu");//自1
$bool=DB::table("vipinfo")->where('vip_ID',6)->decrement("vip_fenshu",3);//自增3
echo $bool;
//自增時再修改其他欄位
$bool=DB::table("vipinfo")->where('vip_ID',6)->increment("vip_fenshu",3,['vip_name'=>'dbdibi']);//自增3
(3)刪除
$num=DB::table("vipinfo")->where('vip_ID',6)->delete();//刪除1條
$num=DB::table("vipinfo")->where('vip_ID','>',4)->delete();//刪除多條
echo $num; //刪除的行數
$num=DB::table("vipinfo")->truncate();//刪除整表,不能恢復,謹慎使用
(4)查詢
//get()返回多條資料
$student=DB::table("vipinfo")->get();
var_dump($student);
//first()返回1條資料
$student=DB::table("vipinfo")->first(); //結果集第一條記錄
$student=DB::table("vipinfo")->orderBy('vip_ID','desc')->first();//按vip_ID倒序排序
var_dump($student);
//where()條件查詢
$student=DB::table("vipinfo")->where('vip_ID','>=',2)->get(); //一個條件
$student=DB::table("vipinfo")->whereRaw('vip_ID> ? and vip_fenshu >= ?',[2,300])->get(); //多個條件
dd($student);
//pluck()指定欄位,後面不加get
$student=DB::table("vipinfo")->pluck('vip_name');
dd($student);
//lists()指定欄位,可以指定某個欄位作為下標
$student=DB::table("vipinfo")->lists('vip_name','vip_ID'); //指定vip_ID為下標
dd($student);
$student=DB::table("vipinfo")->lists('vip_name'); //不指定下標,預設下標從0開始
//select()指定某個欄位
$student=DB::table("vipinfo")->select('vip_name','vip_ID')->get();
dd($student);
//chunk()每次查n條
$student=DB::table("vipinfo")->chunk(2,function($students){ //每次查2條
var_dump($students);
if(.......) return false; //在滿足某個條件下使用return就不會再往下查了
});
2.使用聚合函式
//count()統計記錄條數
$nums=DB::table("vipinfo")->count();
echo $nums;
//max()某個欄位的最大值,同理min是最小值
$max=DB::table("vipinfo")->max("vip_fenshu");
echo $max;
//avg()某個欄位的平均值
$avg=DB::table("vipinfo")->avg("vip_fenshu");
echo $avg;
//sum()某個欄位的和
$sum=DB::table("vipinfo")->sum("vip_fenshu");
echo $sum;
四、資料庫操作之 - Eloquent ORM
1.簡介、模型的建立及查詢資料
簡介:laravel所自帶的Eloquent ORM 是一個ActiveRecord實現,用於資料庫操作。每個資料表都有一個與之對應的模型,用於資料表互動。
建立模型,在app下建立一個Student.php。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model{
//指定表名
protected $table= 'vipinfo';
//指定主鍵
protected $primaryKey= 'vip_ID';
}
在Student控制器裡增加一個方法test3,配置路由
public function test3(){
// all()方法查詢所有資料
$studnets=Student::all();
dd($studnets);
//find()查詢一條,依據主鍵查詢。findOrFail()查詢不存在的記錄時會丟擲異常
$student=Student::find(5); //主鍵為5的記錄
var_dump($student['attributes']);
//查詢構造器的使用,省略了指定表名
$student=Student::get();
var_dump($student);
}
路由:Route::get('test3',['uses'=>'[email protected]']);
2.新增資料、自定義時間戳、批量賦值
//(1)使用save方法新增
laravel會預設維護created_at,updated_at兩個欄位,這兩個欄位都是儲存時間戳,整型11位的,因此使用時需要在資料庫新增這兩個欄位。如果不需要這個功能,只需要在模型里加一個屬性:
public $timestamps=false;
以及一個方法,可以將當前時間戳存到資料庫
protected function getDateFormat(){
return time();
}
這樣就不需要那兩個欄位了。
控制器裡寫:
$student=new Student();
//設定資料
$student->vip_name='xiaoming';
$student->vip_type='出行';
$student->vip_fenshu=900;
$bool=$student->save(); //儲存
echo $bool;
從資料庫裡取得某條記錄的時間戳時,預設取得的是按日期格式化好的時間戳,如果想取得原本的時間戳,則在模型裡增加asDateTime方法。
protected function asDateTime($val){
return $val;
}
(2)使用create方法新增時,需要在模型裡增加:
//允許批量賦值的欄位
protected $fillable=['vip_name','vip_fenshu','vip_type'];
控制器裡寫:
Student::create(['vip_name'=>'mmm','vip_fenshu'=>999,'vip_type'=>'出行']);
(3)firstOrCreate()以屬性查詢記錄,若沒有則新增
$student=Student::firstOrCreate(['vip_name'=>'mmm']);
echo $student;
(4)firstOrNew()以屬性查詢記錄,若沒有則會建立新的例項。若需要儲存,則自己呼叫save方法()
$student=Student::firstOrNew(['vip_name'=>'mmm']);
$student->save();
echo $student;
3修改資料
//通過模型更新資料
$student=Student::find(2);
$student->vip_fenshu=10000;
$student->save(); //返回bool值
//通過查詢構造器更新
$num=Student::where('vip_ID','>',2)->update(['vip_fenshu'=>2000]);
echo $num; //返回更新的行數
4.刪除資料
//(1)通過模型刪除資料
$student=Student::find(11);
$student->delete(); //返回bool值
//(2)通過主鍵刪除
$num=Student::destroy(10); //刪除一條
echo $num; //返回刪除的行數
$num=Student::destroy(10,5); //刪除多條 或者$num=Student::destroy([10,5]);
echo $num; //返回刪除的行數
相關推薦
Larave5.*框架 資料庫的CURD增刪改查操作教程
Laravel提供了3種操作資料庫方式:DB facade(原始方式)、查詢構造器和Eloquent ORM。下面我將逐一講解。 資料庫的配置檔案在config目錄下的database.php裡。開啟這個檔案,找到MySQL的配置項。 這裡有個env,它其實
使用Spring框架下的JdbcTemplate 完成對資料庫的增刪改查操作
還記得以前做的畢業設計是用的C3P0包,而當時並沒有使用到三大框架。現在畢業工作了,但是感覺要學的比工作深一層,一是提高自己的能力,二是以防萬一要換工作了,起碼掌握的東西能支撐自己以後的工作。不過這時候感覺自己就像java萌新(不,其實就是。) 現在第一篇技術相關的文章就寫
lua 連線mysql資料庫實現增刪改查操作(linux下示例)
(1)linux下連線資料庫: mysql -u root -p,-u 指定登入使用者,-p 指定密碼。 [[email protected]18 develop]$ mysql -u root -p Enter password: Welcome to the MySQ
JDBC操作----執行資料庫的 增刪改查 操作
資料庫連線成功後,即可對資料庫進行具體的操作 一、執行資料庫資料的插入操作 使用PreparedStatement介面執行資料庫資料的插入操作,程式碼如下 : import java.sql.
Python的Django框架-資料庫查詢(增刪改查)
建立專案 django-admin startproject django_model 建立應用 python manage.py startapp model 配置應用 model, 編輯 django_model/settings.py
shell指令碼實現mysql資料庫的增刪改查操作
一、shell指令碼實現mysql操作 通用的shell語句如下: mysql -hHOSTNAME−P{HOSTNAME} -PHOSTNAME−P{PORT} -uUSERNAME−p{USERNAME} -pUSERNAME−p{PASSWORD} -
mysql學習【第3篇】:資料庫之增刪改查操作 資料庫之表操作,資料操作
資料庫之表操作,資料操作 注意的幾點:1.如果你在cmd中書命令的時候,輸入錯了就用\c跳出 2.\s檢視配置資訊
ASP.NET 使用類對資料庫進行增刪改查操作
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Dat
JDBC實現資料庫的增刪改查操作例項
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement
java實現hbase資料庫的增刪改查操作(新API)
操作環境: java版本: jdk 1.7以上 hbase 版本:1.2.x hadoop版本:2.6.0以上 實現功能: 1,建立指定表 2,刪除指定表 3,根據表名,行鍵,列族,列描述符,值插入資料 4,根
MyBatis對資料庫的增刪改查操作,簡單示例
之前一直實用Hibernate進行開發,最近公司在使用Mybatis,根據網上的示例,做了一個簡單的Demo,以便日後複習 使用XMl方式對映sql語句 總體結構如下圖 首先是建立一個工程,然後匯入兩個jar包,然後編寫mybatis的jdbc配置檔案Configu
Mybatis(一)—實現對資料庫的增刪改查操作
1.Mybatis簡介 MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。
java通過JDBC連線資料庫及增刪改查操作
1.實戰資料庫資料的準備 建立資料庫(newsmanager),然後建立表news(id,title,content,type)和newstype(id,name),其中news的type和newstype的id為主外來鍵關係,如下圖圖 2.JDBC的介紹
第六章:Django對mySQL資料庫的增刪改查操作
上一章中介紹了用Django連線MySQL資料庫,本章介紹最基本的增刪改查操作,繼續利用上一章建立的表 一、新增資料 1、引入資料模組 from models import Blog
MyBatis框架搭建及增刪改查操作
一.搭建好myBatis的環境 1.引入jar包 (1).mybatis-3.2.7jar核心jar (2).mysql核心jar (3).junit-4.9.jar 2.建立mybatis全域性配置檔案SqlMapConfig.xm(名字自
python 連線mysql資料庫 進行增刪改查操作
1、在進行連線之前我們要確定我們已經安裝了python和mysql(開玩笑,沒有這個你怎麼連線那)至於安裝的過程在此略過, 2、因為要進行連線mysqldb 所有我們要匯入MySQLdb的模組,當然這個模組在預設的python中是沒有的,https://pypi.pytho
golang基礎-go對資料庫的增刪改查操作
增加 查詢 修改 刪除 增加 首先看資料庫的結構: mysql> desc person; +----------+--------------+------+-----+---------+-------------
安卓中sqlite資料庫的增刪改查操作的工具類
<span style="font-family:Microsoft YaHei;font-size:18px;">將資料庫中的增刪改查操作封裝成一個類,使用時直接呼叫很方便 package com.qianfeng.day14_sqliteopenhelpe
VS連線SQL Server資料庫,增刪改查詳細教程(C#程式碼)
工具: 1.Visual Studio (我使用的是vs2013) 2.SQL Server (我使用的是sql server2008) 操作: 1.開啟SQL Server,開啟後會看到資料庫的初始連結介面。(如下圖) 2.複製上圖中的“伺服器名稱”,然後點
MyBatis框架基於Annotation註解的資料庫增刪改查操作
程式碼: User.java package com.bean; import java.io.Serializable; public class User implements Serial