Eloquent ORM (Object-Relational Mapping) cung cấp API ActiveRecord cho phép giao tiếp với cơ sở dữ liệu Database dễ dàng. Khi tìm hiểu về Laravel bạn cũng cần phải nắm rõ kiến thức về Eloquent Model. Qua đó bạn sẽ làm việc với Database trơn tru và hiện quả hơn.

Trước tiên hãy đảm bảo rằng mã nguồn đã được kết nối với CSDL. Tiếp đó bạn cũng đã biết cách sử dụng CMD trên máy tính nữa.

Ok giờ bắt đầu nhé!

Gõ vào cmd với câu lệnh:

cd C:\xampp\htdocs\thu_muc_laravel

Tiếp theo

php artisan make:model TestModel -m

-m cần thêm vào để sinh ra Migration. Nếu bạn chưa biết Migration hãy đọc lại.

Vào thư mục C:\xampp\htdocs\thu_muc_laravel\app\Models mở file TestModel.php lên.

Câu lệnh thường sử dụng với Eloquent Model

1. Kết nối bảng

protected $table = 'data';

data chính là bảng trên Database

Và file đầy đủ như sau:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class TestModel extends Model
{
    use HasFactory;

    protected $table = 'data';
}

2. Timestamps

Hai cột created_atupdated_at là mặc định trong Laravel. Vì vậy nếu không muốn sử dụng hãy dùng

public $timestamps = false;

Hoặc thay đổi định dạng ngày tháng năm dùng

protected $dateFormat = 'd-m-Y';

3. Kết nối database

Khi cấu hình Laravel chúng ta đã kết nối tới Cơ sở dữ liệu cho toàn bộ hệ thống. Tuy nhiên nếu bạn muốn sử dụng một kết nối khác cho Model hãy sử dụng

protected $connection = 'database-name';

database-name là tên database.

4. Khóa chính của bảng

Mặc định khóa chính sẽ là id. Nhưng trong trường hợp muốn thay đổi khóa một column nào đó hãy dùng

protected $primaryKey = 'id_cat';

Lưu ý: Kiểu dữ liệu của khóa chính phải là số nguyên Integer (int).

5. Chọn column nhất định

Lệnh này sẽ chỉ lấy dữ liệu của 2 cột username và password. Mục đích của việc này là tối ưu hiệu suất.

protected $fillable = [ 'username', 'password', ];

6. Lưu dữ liệu vào Database

Đọc lại Bài 6: Upload ảnh lên Database trong Laravel. Tại Controller bạn sẽ tạo một hàm lưu trữ như sau:

public function insert() {
$article = new TestModel;
$article->username = "admin-new";
$article->password = "123456";
$article->save();
echo "Thêm dữ liệu thành công!";
}

7. Update CSDL

public function update() {
        $article = \App\Models\TestModel::find(1);
        $article->content = "Laravel";
        $article->save();
        echo "Update thành công";
}

8. Xóa dữ liệu

public function delete() {
        $article = \App\Models\TestModel::find(1);
        $article->delete();
        echo "Xóa thành công!";
}

Thực hành với bài tập sau:

Tại TestController.php mình sẽ có nội dung như sau:

<?php
  
namespace App\Http\Controllers;
  
use App\Models\TestModel;
use Illuminate\Http\Request;
  
class TestController extends Controller {

    public function home() {
        $articles = \App\Models\TestModel::all();
        var_dump($articles);
    }
  
    public function insert() {
        $article = new TestModel;
        $article->username = "admin-new";
        $article->password = "123456";
        $article->save();
        echo "Thêm dữ liệu thành công!";
    }
      
    public function update() {
        $article = \App\Models\TestModel::find(11);
        $article->username = "Laravel";
        $article->save();
        echo "Cập nhật thành công!";
    }
      
    public function delete() {
        $article = \App\Models\TestModel::find(11);
        $article->delete();
        echo "Xóa thành công!";
    }
}

Tại TestModel.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class TestModel extends Model
{
    use HasFactory;

    protected $table = 'admin';
    public $timestamps = false;
}

Tại web.php trong route

Route::get('home','App\Http\Controllers\[email protected]');
Route::get('insert','App\Http\Controllers\[email protected]');
Route::get('update','App\Http\Controllers\[email protected]');
Route::get('delete','App\Http\Controllers\[email protected]');

Lần lượt gõ https://localhost/blog/public/insert

https://localhost/blog/public/update

https://localhost/blog/public/delete

Để xem kết quả.

Với Eloquent Model khi làm việc với Database bạn sẽ thấy rằng mọi thứ thật sự đơn giản đúng không nào. Và đừng quên đọc thêm bài Query Builder trong Laravel 8 nữa nhé.

Cùng chủ đề

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *