最近小編在學習號稱世界最牛框架–Laravel。其實學習框架也就是學習框架的想法! 我想在我的部落格中記錄我在laravel學習中的一些心得,歡迎大家關注我的其他Github部落格和簡書,互相交流!
版本:Laravel 5.2
資料庫:mysql 5.7
php:php7.1
在Laravel中執行資料庫操作有兩種方式,一種是使用\DB
外觀物件的靜態方法直接執行sql查詢,另一個是使用Model類別的靜態方法(實際上也是Facade的實現,使用靜態存取方式存取Model的方法,內部採用了callStatic
魔術方法代理了對成員方法的存取。數組,數組中每一個值為一個
$results = DB::select('select * from users where id = ?', [1]);foreach ($results as $res) { echo $res->name; }
從表中查詢單行/列
使用first方法傳回單行數據,該方法傳回的是一個stdClass物件<pre class="brush:php;toolbar:false;">$results = DB::select(&#39;select * from users where id = :id&#39;, [&#39;id&#39; => 1]);</pre>
如果只需要一列的值,則可以使用value方法直接獲取單列的值
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }從資料表中分塊查找資料列該方法用於資料表中有大量的資料的操作,每次從結果集中取出一部分,使用閉包函數進行處理,然後再處理下一部分,該命令一般用於Artisan命令列程式中處理大量資料。 ##false
$user = DB::table('users')->where('name', 'John')->first(); echo $user->name;這裡的
pluck
函數有兩個參數$email = DB::table('users')->where('name', 'John')->value('email');
DB::table('users')->chunk(100, function($users){ foreach ($users as $user) { // } });聚合函數
查詢建構器也提供了一些聚集函數如
count,max,min,avg,sum
$titles = DB::table('roles')->pluck('title');foreach ($titles as $title) { echo $title; }指定select查詢條件
查詢指定的列
#
Collection pluck( string $column, string|null $key = null)如果已經指定了select,但是又希望再次添加一些字段,使用它addSelect方法
$roles = DB::table('roles')->pluck('title', 'name');foreach ($roles as $name => $title) { echo $title; }
查詢不同的結果distinct
#$users = DB::table('users')->count(); $price = DB::table('orders')->max('price'); $price = DB::table('orders')->where('finalized', 1)->avg('price');使用原生
表達式
#使用DB::raw方法可以將所需的sql片段,但是非常不建議使用該方法,用不好會產生sql注入
$users = DB::table('users')->select('name', 'email as user_email')->get();Join操作#內連接Inner Join#使用join執行內連接操作,該函數第一個參數為要連接的表名,其它參數指定了連接約束
$query = DB::table('users')->select('name');$users = $query->addSelect('age')->get();左連接Left Join
#使用leftJoin方法執行左連接操作,參數和join一樣$users =
$users = DB::table('users')->distinct()->get();
高級Join方法#如果join方法的約束條件比較複雜,可以使用閉包函數的方式指定
$users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
如果join約束中要使用列值與指定數組比較,則可以使用where和OrWhere方法<pre class="brush:php;toolbar:false;">$users = DB::table(&#39;users&#39;)
->join(&#39;contacts&#39;, &#39;users.id&#39;, &#39;=&#39;, &#39;contacts.user_id&#39;)
->join(&#39;orders&#39;, &#39;users.id&#39;, &#39;=&#39;, &#39;orders.user_id&#39;)
->select(&#39;users.*&#39;, &#39;contacts.phone&#39;, &#39;orders.price&#39;)
->get();</pre>
Union操作
DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get();
同樣,
unionAll方法也是可以使用的,參數與union相同。
Where查詢條件
<p style="margin-top: 7px;">DB::table('users')<br/> ->join('contacts', function ($join) {<br/> $join->on('users.id', '=', 'contacts.user_id')->orOn(...);<br/> })<br/> ->get();<br/></p>
以上是Laravel學習-資料庫操作和查詢建構器的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!