生活随笔
收集整理的這篇文章主要介紹了
十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.排序分組
使用 whereColumn()方法實現兩個字段相等的查詢結果;
$users = DB::table('users') ->whereColumn('create_time', 'update_time') ->get();
使用 orderBy()方法實現 desc 或 asc 排序功能。
$users = DB::table('users') ->orderBy('id', 'desc') ->get();
使用 latest()方法設置時間倒序來排,默認時間字段是 created_at;
$users = DB::table('users')->latest('create_time')->toSql();
使用 inRandomOrder()方法來隨機排序,得到一個隨機列表;
$users = DB::table('users')->inRandomOrder()->get();
使用 skip()和 take()限制結果集,或使用 offset()和 limit();
$users = DB::table('users')->skip(2)->take(3)->toSql();
$users = DB::table('users')->offset(2)->limit(3)->get();
使用 when()方法可以設置條件選擇,執行相應的 SQL 語句;
$users = DB::table('users')->when(true, function ($query) { $query->where('id', 19); }, function ($query) { $query->where('username', '輝夜'); })->get();
如果 MySQL 在 5.7+,有支持 JSON 數據的新特性;
$users = DB::table('users')->where('list->id', 19)->first();
二.子查詢
使用 whereExists()方法實現一個子查詢結果,返回相應的主查詢;
$users = DB::table('users')->whereExists(function ($query) { $query->selectRaw(1) ->from('books') ->whereRaw('laravel_books.user_id = laravel_users.id'); })->toSql();
whereColumn('books.user_id','users.id');
PS:select 1 from,一般用于子查詢的手段,目的是減少開銷,提升效率,深入請搜索;
也可以使用 where(字段,function())閉包,來實現一個子查詢;
(此處有錯誤!!!)
$users = DB::table('users')->where('id', function ($query) { $query->select('user_id') ->from('books') ->whereColumn('books.user_id','users.id'); })->toSql();
總結
以上是生活随笔為你收集整理的十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。