Model trong Laravel

Trong cấu trúc MVC thành phần Model đượ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. Model trong Laravel cũng có chức năng tương tụ. Trong Laravel mỗi một 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 các bạn cùng theo dõi nhé!

1. Tạo Model trong Laravel.

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ợ.

1.1  Cách 1: Tạo thủ công.

Để tạo một model có hiệu lực thì bắt buộc các bạn phải:

  • Đặt nó ở trong thư mục App/
  • Tên class bên trong file phải cùng với tên file. VD: file news.php thì phải có class là news.
  • Class vừa tạo phải kế thừa Model gốc của Laravel. VD: class news extends Model{...}

Để kế thừa thành công Model trong Laravel thì bắt buộc bạn phải khai báo sử dụng namespace Của Model gốc của Laravel và đồng thời khai báo namespace mới cho model vừa tạo.

VD: Tôi tạo một model News.php trong App/ của Laravel.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class News extends Model
{
// code   
}

1.2 Cách 2: Tạo bằng lệnh Laravel cung cấp sẵn.

Cách này được khuyến khích sử dụng do nhanh gọn nhẹ chuẩn.

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 News

Hoặc

php arisan make:model News --migration

Trong đó:

News 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é)

Sau đó enter và vào trong thư mục App/bạn sẽ thấy có một file News.php trong đó và bên trong sẵn có đoạn code.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class News extends Model
{
    //
}

2. Các thông số tùy chỉnh trong Model

Xét ví dụ sau

<?php
class News 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 aravel 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ì mọi người khai báo dòng sau trong class 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 = 'sinhvien';

Lọc cột dữ liệu trong model.

Trong laravel 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 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 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é!


Bình luận