iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
自我挑戰組

學框架永不嫌晚,從現在開始學Laravel你也可以系列 第 10

Day 10 Laravel基礎功 - Data Query 3

  • 分享至 

  • xImage
  •  

今天要介紹的是剩下比較常見的其他SQL寫法

    <?php
        // Join 要放 leftJoin, rightJoin, crossJoin都可
        DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();
            
            
        //聯集
        
        use Illuminate\Support\Facades\DB;
 
        $first = DB::table('users')
                    ->whereNull('first_name');

        $users = DB::table('users')
                    ->whereNull('last_name')
                    ->union($first)
                    ->get();
                    
        //whereNull 是否為null / whereNotNull 不為null / orWhereNull 或是否為null / orWhereNotNull 或不為null
        
        DB::table('users')
                ->whereNull('updated_at')
                ->get();
                
        //使用日期當搜尋條件
        DB::table('users')
                ->whereDate('created_at', '2016-12-31')
                ->get();
        
        //使用時間當搜尋條件
        DB::table('users')
                ->whereTime('created_at', '=', '11:20:45')
                ->get();
                
        //用來驗證兩個欄位是否相同, 也可加上判斷式使用
        DB::table('users')
                ->whereColumn('first_name', 'last_name')
                ->get();
                
        DB::table('users')
                ->whereColumn([
                    ['first_name', '=', 'last_name'],
                    ['updated_at', '>', 'created_at'],
                ])->get();
                
                
        //Order By 按照欄位排序
        DB::table('users')
                ->orderBy('name', 'desc')
                ->orderBy('email', 'asc')
                ->get();
                
                
        //Group By  havingBetween 設定搜尋結果的範圍
        DB::table('orders')
                ->selectRaw('count(id) as number_of_orders, customer_id')
                ->groupBy('customer_id')
                ->havingBetween('number_of_orders', [5, 15])
                ->get();

    ?>

上一篇
Day 9 Laravel基礎功 - Data Query 2
下一篇
Day 11 Laravel基礎功 - Request的生命週期
系列文
學框架永不嫌晚,從現在開始學Laravel你也可以14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言