最近小編在學習號稱世界最牛框架–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物件<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">$results = DB::select(&#39;select * from users where id = :id&#39;, [&#39;id&#39; => 1]);</pre><div class="contentsignin">登入後複製</div></div>
如果只需要一列的值,則可以使用value方法直接獲取單列的值
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }
$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; }
查詢指定的列
#
Collection pluck( string $column, string|null $key = null)
$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();
$query = DB::table('users')->select('name');$users = $query->addSelect('age')->get();
#使用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方法<div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div>
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中文網其他相關文章!