Trong các bài sử dụng Query Builder trước chúng ta thấy rằng mỗi khi gọi một hàm xử lý trong controller mà có liên quan đến dữ liệu chúng ta lại phải gọi ra một chuỗi các lệnh SQL ... nói chung là hơi bị tù. Cái hay của mô hình MVC chính là tách biệt các thành phần và nhiệm vụ của chúng. Model trong Laravel 8 được sử dụng để tách biệt quy trình tương tác với database (cơ sở dữ liệu) với các quy trình khác. Trong Laravel 8 mỗi Model là một Class tương ứng một bảng trên CSDL và Class này sẽ có những thuộc tính và phương thức giúp tương tác với CSDL. Bài viết dưới đây sẽ minh họa cho các bạn cách sử dụng Model trong Laravel 8 một cách dễ hiểu nhất các bạn cùng theo dõi nhe!
1. Tạo Model trong Laravel 8.
Giống như trong Controllers, model trong laravel cũng có hai các tạo là thủ công và bằng lệnh mà Laravel hỗ trợ. Tạo thủ công nó lại rất tù vì vậy chúng chỉ học cách tạo bằng lệnh mà thôi. Một điều khác bọt của Laravel 8 so với phiên bản cũ chính là Model sẽ có riêng một thư mục chứ không nằm trơ trọi bên ngoài nữa. Mọi model chúng ta tạo ra đều được Laravel 8 cho vào thư mục app/Models.
Cú pháp tạo Model Laravel 8.
Chúng ta chỉ cần bật Cmder tại thư mục chứ project Laravel của các bạn và gõ lệnh.
php artisan make:model TenModel
Hoặc
php arisan make:model TenModel--migration
Trong đó:
- TenModel là tên model bạn muốn tạo
- Với việc thêm --migration ở cuối chúng ta đồng thời tạo luôn một file migration (migration là gì thì hẹn các bạn ở bài sau nhé)
Truy cập vào thư mục App/Model Tenmodel.php trong đó và bên trong sẵn có đoạn code.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class TenModel extends Model
{
use HasFactory;
}
2. Các thông số tùy chỉnh trong Model
Xét ví dụ sau
<?php
class TenModel extends Model{
protected $table = 'users';
protected $timestamps = false;
}
Thì đoạn code sau
protected $table = 'users'; protected $timestamps = false;
Chính là để khai báo các thông số tùy chỉnh trong Model. Chúng ta sẽ lần lượt tìm hiểu về chúng nhé
Khai báo table (bảng) cần sử dụng trong Model.
Trong laravel 8 mỗi một model ứng với một bảng(table) dữ liệu trong CSDL và để khai báo model sử dụng bảng dữ liệu nào trong database thì chỉ cần khai báo như sau trong Model
protected $table = 'tên_bảng';
Trong đó : tên_bảng là tên table các bạn muốn sử dụng.
Ví Dụ:
protected $table = 'users';
Lọc cột dữ liệu trong model.
Trong laravel 8 chẳng hạn như bảng user tôi chỉ muốn truy vấn cột user_name,user_email mà không muốn sử dụng cột password thì sao. Chính vì điều đó Laravel cũng đã cung cấp cho chúng ta một thông số là fillable để điều chỉnh các cột cần sử dụng.
protected $fillable = ['column1', 'column2', .., 'columnn'];
Khai báo timestamps.
Laravel 8 cũng cung cấp cho chúng ta tùy biến có sử dụng time stamps hay không. Nếu để true là có và ngược lại false là không.
public $timestamps = true;
// hoặc
public $timestamps = false;
Thuộc tính thứ $timestamps được dùng để xác định xem 2 cột created_at và updated_at có tồn tại trên bảng users hay không. Hai cột này dùng thường được thêm vào để theo dõi khi nào một record được thêm vào bảng hay cập nhật trên bảng. Trường hợp của chúng ta không sử dụng 2 cột này nên giá trị của thuộc tính này sẽ là false.
3. Lời kết.
Khái báo và cấu hình Model trong Laravel 8 chỉ đơn giản như vậy thôi, cách vận dụng nó thế nào hẹn các bạn ở bài viết tiếp theo nhé!