Query Builder trong Laravel

Nếu như PHP thuần để tương tác với Database chúng ta sẽ phải kết nối với db và thực hiện nhiều truy vấn mới gọi được dữ liệu ra. Thế nhưng với các framework đặc biệt là Laravel thì không cần phải vậy. Laravel cung cấp cho chúng ta một chức năng rất hay là Query Builder. Trong bài viết này chúng ta cùng tìm hiểu về Query Builder trong Laravel các bạn nhé.

1. Cấu hình database.

Trước tiên để sử dụng được Query builder chúng ta cần phải cấu hình database kết nối đến cơ sở dữ liệu.

Để cấu hình Database các bạn cần mở file .env lên và cấu hình đoạn sau:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O7KqWBkzOg3IaBN+UHN9AaK6rC26JAHMxzOwWHrdJkY=
APP_DEBUG=true
APP_URL=http://localhost


LOG_CHANNEL=stack


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=college 
DB_USERNAME=root
DB_PASSWORD=

Bạn cần chú ý cấu hình như sau:

  • DB_HOST : Là server chứa mysql của bạn 
  • DB_PORT: Là cổng post của server Mysql của bạn (thường để mặc định là 3306).
  • DB_DATABASE: Là tên database của bạn (ở đây chúng mình sử dụng bảng college đã tạo từ trước)
  • DB_USERNAME: Là username để truy cập vào database của bạn. ( user mặc định của xampp là root)
  • DB_PASSWORD: Là password để truy cập vào database của bạn. ( mặc định trong xampp là rỗng)

2. Sử dụng Query Builder.

Sau khi đã cấu hình được database (ở phần trên). Thì giờ chúng ta bắt đầu thực hành truy vấn Sql với Query Builder nhé.

Lấy tất cả dữ liệu trong bảng.

Cú Pháp:

DB::table('tablename')->get()

VD: Lấy tất cả dữ liệu trong bảng student

Route::get('laydulieu', function () {
    $data = DB::table('student')->get();
    print_r($data);
});

Kết quả:

Illuminate\Support\Collection Object ( [items:protected] => Array ( [0] => stdClass Object ( [ID] => 1 [Name] => Pham Nhan ) [1] => stdClass Object ( [ID] => 2 [Name] => Vo Danh ) ) )

Select cột trong bảng.

Cú pháp:

DB::table('tablename')->select('columnfirst', 'columnsecond')->get();

Select có điều kiện.

Cú pháp:

  • Điều kiện bằng:
    • DB::table('tablename')->where('column', 'filter')->get();
  • Điều kiện lớn hơn:
    • DB::table('tablename')->where('column', '>', 'filter')->get();
  • Điều kiện nhỏ hơn:
    • DB::table('tablename')->where('column', 'get();
  • Điều kiện khác:
    • DB::table('tablename')->where('column', '<>', 'filter')->get();
  • Điều kiện lồng:
    • users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();

Truy vấn tìm kiếm.

DB::table('tablename')->where('column', 'like', 'filter')->get();

Ví dụ: DB::table('product')->where('name', 'like', '%Sách%')->get();

Join bảng.

$users = DB::table('users')->join('contacts', 'users.id', '=', 'contacts.user_id')->get();

  • Left join:
    • $users = DB::table('users')->leftjoin('contacts', 'users.id', '=', 'contacts.user_id')->get();

Unions.

$first = DB::table('users')->whereNull('first_name');
$users = DB::table('users')
            ->whereNull('last_name')
            ->union($first)
            ->get();

OrderBy.

$users = DB::table('users')
                ->orderBy('name', 'desc')
                ->get();

Random.

$randomUser = DB::table('users')
                ->inRandomOrder()
                ->first();

GroupBy/having.

$users = DB::table('users')
                ->groupBy('account_id')
                ->having('account_id', '>', 100)
                ->get();

Thêm (insert).

DB::table('users')->insert(
    ['email' => 'john@example.com', 'votes' => 0]
);

Sửa (update).

DB::table('users')
            ->where('id', 1)
            ->update(['votes' => 1]);

Xóa (delete).

DB::table('users')->delete();
//hoặc
DB::table('users')->where('votes', '>', 100)->delete();

3. Lời kết:

Trên đây là cách sử dụng một số câu lệnh truy vấn cơ bản trong Query Builder. Bạn hãy luôn nhớ cần phải kết nối cơ sở dữ liệu đồng thời nếu truy vấn trong controllers thì các bạn cần phải khai báo use Illuminate\Support\Facades\DB; còn trong Route thì không cần đâu nhé. Việc áp dụng Query Builder với controllers các bạn tham khảo ở bài học sau nhé. Chúc các bạn học tốt!

Bình luận