Eloquent ORM trong Laravel
Giới thiệu
Ở các bài trước chúng ta đã tìm hiểu về Controller và View trong mô hình MVC vậy thì ở bài này chúng ta sẽ tìm hiểu về Model. Eloquent model ORM (Object Relational Mapping) đây là tên gọi chỉ việc ánh xạ các record dữ liệu trong hệ quản trị cơ sở dữ liệu sang dạng đối tượng mà mã nguồn đang định dạng trong class. Eloquent ORM: Larvel đã sử dụng kỹ thuật ORM giúp lập trình viên thao tác dễ dàng hơn với DB. Trong phần này chúng ta sẽ nói nhiều đến phần kiến thức Eloquent Model (Model) - là một phần trong mô hình MVC ở trên. Các Model này sẽ thao tác trực tiếp với DB, xử lý logic nghiệp vụ và trả về dữ liệu cho controller.
Định nghĩa Model và thiết lập cơ bản
Lưu ý trong database chúng ta có bảng posts thì chúng ta nên đặt tên model giống với tên bảng để tránh nhầm lẫn vã dễ thao tác.
Ví dụ : để tạo model post chúng ta mở cửa sổ commandline, trỏ đến thư mục Laravel project và thực thi dòng lệnh:
php artisan make:model postFile model tạo ra được lưu ở thư mục: Models
Mở file post.php vừa được tạo trong thư mục App\Models ra chúng ta sẽ thấy class post được extends từ class Model. Trong đó chúng ta có thể quy định các phương thức truy vấn dữ liệu, tuy nhiên mặc định nó sẽ liên kết đến bảng posts trong database và chúng ta không cần chỉnh sửa gì cả.
Route::get('/readall', function (){
$posts = post::all();
foreach ($posts as $p){
echo $p->title.'<br>';
}
});
Thay vì sử dụng câu lệnh SQL thì chúng ta sẽ gọi class post trước đó, để gọi được class này chúng ta cần use App\Models\post;.
Tiếp theo chúng ta sẽ truy cập cms.vn/readAll để kiểm tra nhé.
Tìm kiếm
Route::get('/findId', function (){
$post = post::where('id','4')
->orderBy('id','desc')
->take(10)
->get();
foreach ($post as $p) {
echo $p->title.' '.$p->body;
echo '<br>';
}
});
Ở đây chúng ta thực hiện tìm kiếm 10 bản ghi trong bảng posts có id là 4 và sắp xếp theo thứ tự tăng dần.
Hoặc thêm một số tùy chọn lọc dữ liệu:
Route::get('/findId', function (){
$post = post::where('id','>=',1)
->where('title', 'PHP with Laravel')
->orderBy('id','desc')
->take(10)
->get();
foreach ($post as $p) {
echo $p->title.' '.$p->body;
echo '<br>';
}
});
Tìm 10 bản ghi có id lớn hơn hoặc bằng 1, có title là PHP with Laravel, sắp xếp theo id tăng dần.
Insert dữ liệu
Route::get('/insertORM', function (){
$posts = new post;
$posts->title = 'insert ORM';
$posts->body = 'INSERTED done done ORM';
$posts->is_admin = 1;
$posts->save();
return 'Data Inserted!';
});
Truy cập vào route:
Mỗi lần làm mới trang này chúng ta sẽ có thêm một bản ghi mới. Cẩn thận Insert nhiều quá ngồi xóa mệt nhé.
Xóa một bản ghi
Nếu ở trên bạn lỡ tay refresh quá nhiều thì tôi sẽ hướng dẫn bạn cách xóa bớt bản ghi mà không bị mệt.
Vẫn là tạo route nhé:
Route::get('deleteORM', function (){
post::where('id', '>=', 9)
->delete();
return 'Deleted!';
});
Route::get('destroyORM', function (){
post::destroy([7,5]);
return 'Destroyed!';
});
Giờ thì insert thoải mái nhé. Sau mỗi lần thực thi bạn vào database hoặc truy cập route readall chúng ta đã tạo trước đó để kiểm tra dữ liệu có được thay đổi hay không nhé. Nếu bạn có thắc mắc hay góp ý hãy để lại bình luận hoặc gửi tin nhắn cho mình qua Fanpage để được hỗ trợ sớm hơn nhé.









Nhận xét
Đăng nhận xét