1. Mô hình MVC trong lập trình là gì ?

Chắc hẳn ai bắt đầu với sự nghiệp làm  cũng không thể không biết mô hình MVC. Mình sẽ nói sơ lược lại một chút nhé. MVC(Model- View- Controller) là mô hình phân chia application thành 3 thành phần chính và mỗi thành phần lại có nhiệm vụ riêng của nó:

  • Model: chứa các logic nghiệp vụ và thao tác với DB.
  • View: thực hiện công việc hiển thị và tương tác với người dùng.
  • Controller: làm nhiệm vụ điều hướng giữa các đối tượng tham gia hệ thống. Ví dụ như người dùng có một request lên thì route định tuyến vào controller, thì controller sẽ điều hướng đến cho một Model tương ứng xử lý sau đó kết quả trả về cho Controller , Controller sẽ chuyển đến dữ liệu cho View.

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.

2.Định nghĩa Model và các thiết lập cơ bản

Dùng câu lệnh tạo Model trong terminal:

php artisan make:model tênModel

Ví dụ:

php artisan make:model Post

Sau khi nhấn lệnh thì trong thư mục app tạo file  model là Post.php trong đó có đoạn code sau:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
    //
}
Lưu ý: 
tên model để mapping  phải khớp đúng với bảng trong CSDL. Nếu table trong CSDL là posts thì tên model đặt đúng theo chuẩn là Post
Hoặc nếu table là “users “thì Model là “User”
 
Trường hợp bạn muốn đặt tên bảng khác đi nhưng vẫn phải theo đúng quy chuẩn convention đặt tên trong Laravel nhé(snake case). Ví dụ bảng dữ liệu mình muốn đặt tên my_posts  thì khai báo biến$table trong IlluminateDatabaseEloquentModel  như sau để mapping đúng:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
  protected $table = 'my_posts';
}

2.1 Kết nối DB

Tất cả các Eloquent models sẽ sử dụng DB mặc định khai báo trong file .env, nhưng nếu bạn muốn model này kết nối tới một bảng trong CSDL nào đó thì chúng ta sẽ set như sau trong model:

protected $connection = 'connection-name"