1. Giới thiệu
Eloquent ORM cung cấp cho bạn khả năng làm việc với database một cách đơn giản và hiệu quả. Mỗi table sẽ có một Model tương ứng, cho phép bạn thực hiện các query với table đó.
2. Khởi tạo
Chúng ta có thể sử dụng artisan command để tạo Model một cách rất đơn giản, chúng ta sẽ cùng nhau tạo model Post cho table posts như sau:
php artisan make:model Post
hoặc
// option -m dùng để tạo luôn file migration
php artisan make:model Post - m
Mặc định thì các Model sẽ được đặt trong thư mục app:
3. Quy tắc cho Eloquent Model
Như ở trên thì chúng ta đã tạo model Post cho table trong database là posts. Chắc chắn bạn sẽ thắc mắc là tại sao model Post ở đây lại tương ứng với table posts trong database?
Theo defaul của Laravel, thì đã tự định nghĩa là: kiểu “snake case”, tên class
ở số nhiều sẽ được sử dụng như tên table
. Vì vậy mà model Post
sẽ tương ứng với tên table là posts
.
Vậy giờ ta lại muốn là model Post
là đại diện cho bảng post_by_users
thì Laravel có đáp ứng được ko? Câu trả lời ở đây là có. Trong Eloquent Model có cung cấp thuộc tính table
để xác định tên table
tương ứng với model
đó:
4. Truy vấn với Model
Mỗi Eloquent Model cũng giống như 1 query builder, vì thế bạn có thể thực hiện query tới database 1 cách tương tự.
VD:
Lấy toàn bộ bản ghi trong table posts
:
$posts = App\Post::all();
Thêm một vài ràng buộc:
$posts = App\Post::where('status', 1)
->orderBy('created_at', 'desc')
->get();
Sử dụng find hoặc first để lấy kết quả là một model instance
// Lấy 1 model theo khóa chính của nó...
$post = App\Flight::find(1);
// Lấy về model đầu tiên khớp với các điều kiện truy vấn...
$post = App\Post::where('status', 1)->first();
Các bạn có thể xem lại phần query builder để biết thêm những hàm có thể sử dụng.
5. Thêm và cập nhập model
Để thêm 1 record vào trong database, cần tạo mới 1 model instance và set giá trị cho các attributes, sau đó gọi hàm save
:
$post = new Post;
$post->title = 'Kaopiz - Nhìn lại chặng đường 5 năm a';
$post->save();
kiểm tra database table posts, sẽ thấy có 1 record mới được thêm vào.
Hàm save cũng được sử dụng để update 1 record sẵn có trong database. Chỉ cần lấy model instance ra trước, rồi thay đổi các attribute mong muốn rồi cuối cùng là gọi hàm save
.
$post = App\Flight::find(1);
$post->title = 'Kaopiz - Nhìn lại chặng đường 5 năm';
$post->save();
Để xóa record trong table, còn đơn giản hơn nữa:
$post = App\Flight::find(1);
$post->delete();
or
//Xóa bản ghi với các ràng buộc khác
$deletedRows = App\Post::where('status', 0)->delete();
//xóa record có id là 1
App\Post::destroy(1);
Trên đây là toàn bộ các khái niệm cơ bản về Laravel Eloquen ORM, rất hi vọng bài viết sẽ mang lại nhiều hữu ích cho các bạn quan tâm.
Chúc các các bạn sẽ làm việc tốt với Eloquen ORM trong Laravel.