Điểm nổi bật của Laravel từ phiên bản 5 chấm phải nói đến là Eloquent (ORM). Nó cung cấp đầy đủ các ActiveRecord để thao tác với CSDL 1 cách đơn giản và ngắn gọn. Mỗi bảng của database sẽ được ánh xạ tương ứng với 1 Model, và model này được sử dụng để tương tác với bảng đó.
Bây giờ mình sẽ đi vào ví dụ cụ thể để các bạn dễ hiểu hơn.
Mình sẽ mượn lại ví dụ table trong Bài 8 để demo nhé!
Ta tạo 1 bảng tên product và thêm vào 1 vài dòng như bên dưới
Muốn sử dụng Eloquent trước tiên cần tạo 1 Model để kết nối với bảng product ở trên
Tại thư mục gốc của project bạn mở cmd windows và nhập
php artisan make:model Product
Lệnh trên sẽ tạo 1 file tên Product trong thư mục app (đó chính là thư mục chứa Model mặc định của Laravel)
Tiếp theo bạn mở file Product lên và khai báo
namespace App; use Illuminate\Database\Eloquent\Model; class Product extends Model { // Khai báo tên bảng protected $table = 'product'; // Bảng ko có timestamps public $timestamps = false; }
Ở đây mình sẽ kết nối tới bảng product
Mình phải khai báo public $timestamps = false; vì mặc định Laravel sẽ yêu cầu trong bảng có 2 cột là created_at và updated_at mà trong bảng của mình tạo ko có nên phải để timestamps là flase :)
Tiếp theo vào route tạo 1 link để test nhỉ
Route::get('demo-eloquent', 'DemoController@eloquent' );
tại DemoController bạn cần thêm use App\Product; và tạo 1 phương thức eloquent với nội dung:
public function eloquent(){ // Lấy toàn bộ giá trị trong bảng product $products = Product::get(); var_dump($products); }
Bây giờ vào link http://localhost/congnghe5s-laravel/demo-eloquent bạn sẽ được kết quả
Một số lệnh khi sử dụng eloquent thường dùng trong Laravel
// Lấy product có id = 1 $product = Product::find(1); // Lấy 1 product với điều kiện $product = Product::where('status', 1)->first(); // Lấy 1 tên và id sản phẩm với điều kiện $product = Product::select('id', 'name')->where('status', 1)->get(); // Tính số dòng của bảng $product = Product::count(); //Thêm 1 dòng trên bảng product $product = new Product; $product->name = 'congnghe5s.com'; $product->save(); //Sửa 1 dòng có id=1 trên bảng product $product = Product::find(1);; $product->name = 'congnghe5s.com'; $product->save(); //Xóa 1 dòng có id=1 trên bảng product $product = Product::find(1);; $product->delete(); // hoặc Product::destroy(1);
Các bạn cũng có thể sử dụng các hàm của Query Builder như orderBy(), groupBy() ...
Ngoài ra Eloquent còn có 1 phần mình rất thích là Relationships với các mối quan hệ giữa các bảng như:
Phần này khi nào có thời gian mình sẽ viết 1 bài hướng dẫn thêm
Chúc các bạn thành công!