[Bài đọc] Thực thi các truy vấn

3. Làm việc với Cơ sở dữ liệu

Khi bạn đã cấu hình kết nối cơ sở dữ liệu, bạn có thể thực thi các truy vấn sử dụng façade DB. Façade DB cung cấp các phương thức để thực hiện các kiểu truy vấn sau: select, update, insert, delete và statement.

Thực thi lệnh select

Để thực thi một truy vấn cơ bản, bạn cần sử dụng phương thức select trong façade DB:

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;  

 class UserController extends Controller{
    /**
     * Show a list of all of the application's users.
     *
     * @return Response
     */
     public function index()
   {
         $users = DB::select('select * from users where active = ?', [1]); 
        return view('user.index', ['users' => $users]);
    }
}

Tham số thứ nhất truyền vào cho phương thức select là một lệnh SELECT, trong khi đó tham số thứ hai là các giá trị cần truyền vào cho từng dấu hỏi trong lệnh SELECT.

Phương thức select luôn trả về một tập kết quả. Mỗi kết quả trong tập kết quả sẽ là một đối tượng StdClass, cho phép bạn truy xuất vào giá trị bên trong của kết quả.

foreach ($users as $user) {
    echo $user->name;
}

Sử dụng Named Bindings

Thay vì sử dụng dấu hỏi (?) để tượng trưng cho từng tham số, bạn có thực thi câu truy vấn sử dụng named binding:

$results = DB::select('select * from users where id = :id', ['id' => 1]);

Thực thi câu lệnh insert

Để thực thi lệnh insert, bạn có thể sử dụng phương thức insert của façade DB. Giống như select, phương thức này nhận vào một lệnh SQL là tham số đầu tiên, tham số thứ hai chứa các giá trị liên kết với dấu hỏi trong lệnh SQL.

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

Thực thi câu lệnh update

Phương thức update được dùng để cập nhật các bản ghi đã có trong cơ sở dữ liệu. Phương thức này trả về số bản ghi bị ảnh hưởng:

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);

Thực thi câu lệnh delete

Phương thức delette được sử dụng để xóa các bản ghi trong cơ sở dữ liệu. Giống như update, số lượng dòng bị xóa sẽ được trả về:

$deleted = DB::delete('delete from users');

Thực thi lệnh bất kỳ

Một vài lệnh làm việc với cơ sở dữ liệu không trả về giá trị. Với những thao tác kiểu này, bạn có thể sử dụng phương thức statement của façade DB:

DB::statement('drop table users');

Leave a Reply

Your email address will not be published. Required fields are marked *