laravel5.6框架操作數(shù)據(jù)curd寫法(查詢構(gòu)建器)實(shí)例分析
本文實(shí)例講述了laravel5.6框架操作數(shù)據(jù)curd寫法(查詢構(gòu)建器)。分享給大家供大家參考,具體如下:
laravel5.6 數(shù)據(jù)庫操作-查詢構(gòu)建器
<?php //laravel5.6 語法 demo示例 namespace App\Http\Controllers;//命名該控制App空間下名稱 use Illuminate\Support\Facades\DB;//使用DB操作數(shù)據(jù)庫 use App\Http\Controllers\Controller;//繼承基礎(chǔ)控制器 class UserController extends Controller { /** * 展示應(yīng)用的用戶列表. * * @return Response */ public function index() { //DB使用為每種操作提供了相應(yīng)方法:select(查),update(修改),insert(插入),delete(刪除),statement(聲明) //建議占位符,其他框架通用性強(qiáng) //原生sql寫法 $data = DB::select('select * from users where id = :id and name = :name ',[':id' => 1,':name' =>'測(cè)試']); //查方法 //get() 方法獲取表中所有記錄(獲取多行多列) $data = DB::table('users')->get(); //first() 方法將會(huì)返回單個(gè)對(duì)象(獲取一行一列) //where() 方法查詢指定條件對(duì)象 $data = DB::table('users')->where('id','name','3','測(cè)試')->first(); //select() 方法可以查詢指定自定義字段 $data = DB::table('users')->select('id','name', 'email')->get(); //value() 方法從結(jié)果中獲取單個(gè)值,該方法會(huì)直接返回指定列的值: $data = DB::table('users')->where('name','測(cè)試')->value('email'); //pluck() 方法獲取單個(gè)列值的數(shù)組 $data = DB::table('users')->pluck('name'); //count() 統(tǒng)計(jì)數(shù)量 $data = DB::table('users')->count(); //exists() 方法來判斷匹配查詢條件的結(jié)果是否存在 $data=DB::table('users')->where('id', 1)->exists(); //join() 方法連表查詢 $data = DB::table('users') ->join('ceshi', 'users.id', '=', 'ceshi.id') ->select('users.*', 'ceshi.name') ->get(); //leftJoin() 方法左連表查詢 $data = DB::table('users') ->leftJoin('ceshi', 'users.id', '=', 'ceshi.id') ->select('users.*', 'ceshi.name') ->get(); //where() 參數(shù)說明:(一)參數(shù)是列名,(二)參數(shù)是操作符,(三)參數(shù)是該列要比較的值 $data = DB::table('users') ->where('id', '>=', 1) ->where('name', 'like', '測(cè)試%') ->get(); //傳遞條件數(shù)組到where中寫法,建議多where查詢使用這個(gè)方法 $data = DB::table('users') ->where([ ['id', '>=', 1], ['name', 'like', '測(cè)試%'] ]) ->get(); //whereBetween() 方法驗(yàn)證列值是否在給定值之間 $data = DB::table('users') ->whereBetween('id', [1, 3])->get(); //whereIn 方法驗(yàn)證給定列的值是否在給定數(shù)組中: $data = DB::table('users') ->whereIn('id', [1, 2, 3]) ->get(); //orderBy() 方法排序 $data = DB::table('users') ->orderBy('id', 'desc') ->get(); //insert() 方法插入記錄到數(shù)據(jù)表 //insertGetId() 方法插入記錄并返回自增ID值 $data=DB::table('users')->insert( [ 'name'=>'測(cè)試', 'email' => 'ceshi.com', 'password' => 'ceshi' ] ); //update() 方法修改記錄 $data =DB::table('users') ->where('id', 1) ->update(['name' => '測(cè)試']); //delete() 方法刪除記錄 $data=DB::table('users')->where('id', '>', 10)->delete(); //paginate() 方法分頁 每頁顯示數(shù)量 //注意:目前使用 groupBy 的分頁操作不能被Laravel有效執(zhí)行 $data = DB::table('users')->paginate(2); //前臺(tái)分頁中鏈接附加參數(shù)實(shí)現(xiàn)分頁 $getName = $GET['name']?:''; $data = DB::table('users') ->select('id','name','age') ->where('name', 'like', $getName.'%') ->paginate(2); //返回給前端視圖數(shù)據(jù) return $this->view('index',['data'=>$data,'namePage'=>$getName]); //前端引用代碼 //appends 方法添加查詢參數(shù)到分頁鏈接查詢字符串; 添加 &name=$namePage到每個(gè)分頁鏈接中. {{ $data->appends(['name' => $namePage])->links() }} //simplePaginate() 方法分頁視圖中簡(jiǎn)單的顯示“下一頁”和“上一頁”鏈接 $data = DB::table('users')->simplePaginate(2); //返回給前端視圖數(shù)據(jù) return $this->view('index',['data'=>$data]); //前端簡(jiǎn)單引用代碼 <div class="container"> @foreach ($users as $user) {{ $user->name }} @endforeach </div> {{ $data->links() }} //原生分頁寫法 $page = 2; $pageSize = 1; $offset = ($page - 1) * $pageSize; $result = DB::table('picasa') ->where('title', 'like', '%'.$title.'%') ->offset($offset) ->limit($pageSize) ->get(); //返回?cái)?shù)據(jù)視圖文件 return $this->view('index', ['result' => $result]); } }
groupBy 對(duì)查詢結(jié)果進(jìn)行分組出現(xiàn)問題
當(dāng)select和groupBy中列表不一致時(shí)候會(huì)報(bào)錯(cuò)。mysql從5.7以后,默認(rèn)開啟group by的嚴(yán)格模式。
解決方法:找到config/database.php 在mysql下面把'strict' => true,改為false。[建議不要修改。寫對(duì)正確操作語法。]
例如:
$booked = DB::table('booked_user') ->select('game_id', DB::raw('count(*) as total')) ->groupBy('game_id') ->get();
開啟sql查詢?nèi)罩?/strong>
DB::connection()->enableQueryLog();//開啟QueryLog $data = DB::table('users')->select('id','name', 'email')->get();//執(zhí)行sql dump(DB::getQueryLog());//sql語句和查詢時(shí)間
寫入日志信息
八種日志級(jí)別:emergency、alert、critical、error、warning、 notice、info 和 debug
默認(rèn)日志存放位置: /storage/logs/laravel.log
引用: use Illuminate\Support\Facades\Log;
Log::emergency(string $message, array $context = []); Log::alert(string $message, array $context = []); Log::critical(string $message, array $context = []); Log::error(string $message, array $context = []); Log::warning(string $message, array $context = []); Log::notice(string $message, array $context = []); Log::info(string $message, array $context = []); Log::debug(string $message, array $context = []);
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
- Laravel5.1 框架數(shù)據(jù)庫查詢構(gòu)建器用法實(shí)例詳解
- laravel框架數(shù)據(jù)庫操作、查詢構(gòu)建器、Eloquent ORM操作實(shí)例分析
- laravel通用化的CURD的實(shí)現(xiàn)
- Laravel框架查詢構(gòu)造器 CURD操作示例
- Laravel框架實(shí)現(xiàn)model層的增刪改查(CURD)操作示例
- Laravel框架數(shù)據(jù)庫CURD操作、連貫操作總結(jié)
- laravel5.6 框架操作數(shù)據(jù) Eloquent ORM用法示例
- laravel 操作數(shù)據(jù)庫常用函數(shù)的返回值方法
- laravel框架數(shù)據(jù)庫配置及操作數(shù)據(jù)庫示例
相關(guān)文章
tp5(thinkPHP5)框架連接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了tp5(thinkPHP5)框架連接數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了基于thinkPHP5框架連接數(shù)據(jù)庫的相關(guān)配置、數(shù)據(jù)讀取、模板渲染等操作技巧,需要的朋友可以參考下2018-12-12Yii2框架視圖(View)操作及Layout的使用方法分析
這篇文章主要介紹了Yii2框架視圖(View)操作及Layout的使用方法,結(jié)合具體實(shí)例形式分析了Yii2框架視圖操作及布局layout相關(guān)操作技巧,需要的朋友可以參考下2019-05-05針對(duì)thinkPHP5框架存儲(chǔ)過程bug重寫的存儲(chǔ)過程擴(kuò)展類完整實(shí)例
這篇文章主要介紹了針對(duì)thinkPHP5框架存儲(chǔ)過程bug重寫的存儲(chǔ)過程擴(kuò)展類,結(jié)合完整實(shí)例形式給出了修復(fù)thinkPHP5存儲(chǔ)過程原有bug的擴(kuò)展類定義與使用方法,需要的朋友可以參考下2018-06-06php實(shí)現(xiàn)斐波那契數(shù)列代碼分享
這篇文章主要介紹了php實(shí)現(xiàn)斐波那契數(shù)列代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12PHP、Python和Javascript的裝飾器模式對(duì)比
這篇文章主要介紹了PHP、Python和Javascript的裝飾器模式對(duì)比,修飾模式(Decorator Pattern),又叫裝飾者模式,是面向?qū)ο缶幊填I(lǐng)域中,一種動(dòng)態(tài)地往一個(gè)類中添加新的行為的設(shè)計(jì)模式,需要的朋友可以參考下2015-02-02分享一段php獲取linux服務(wù)器狀態(tài)的代碼
正在做的項(xiàng)目中,需要使用php獲取Linux服務(wù)器狀態(tài),度娘了一下,發(fā)現(xiàn)絕大部分都是基于WIN系統(tǒng)的,好吧,自力更生,分享給大家一段Linux的代碼2014-05-05PHP 網(wǎng)站修改默認(rèn)訪問文件的nginx配置
這篇文章主要介紹了PHP 網(wǎng)站修改默認(rèn)訪問文件的nginx配置,需要的朋友可以參考下2017-05-05