Bài 9: Eloquent (ORM) trong laravel 5.x

Admin
16-06-2017

1. Giới thiệu

Đ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 đó.

2. Cách sử dụng Eloquent

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', [email protected]' );

tại DemoController 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ư:

  • One To One
  • One To Many
  • One To Many (Inverse)
  • Many To Many
  • Has Many Through
  • Polymorphic Relations
  • Many To Many Polymorphic Relations

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!