Laravel 15 : Sử dụng Schema builder Thao tác với bảng

0
717

Giới thiệu

-Schema Builder Là một class trong bộ Facades của Laravel nó giúp chúng ta làm việc với tất cả các cơ sở dữ liệu mà Laravel hỗ trợ với các hàm được định nghĩa sẵn.

-Thường thì nó sẽ được kết hợp với Migrations (chúng ta sẽ học ở bài sau) để xây dự cấu trúc database.

-Điều kiện để sử dụng Schema Builder:

  • Phải có kết nối với database .
  • Muốn sử dụng được Schema Builder thì phải gọi namespace của nó use Illuminate\Support\Facades\Schema (web.php và migration đã tích hợp không cần gọi.). Nên gọi khi ta sử dụng câu lệnh của Schema buidle trong controller

Kết nối database

đầu tiên bạn nên tạo 1 database trong mysql

sau đó vào project sửa phần .env

Thành:

Cách sử dụng.

web.php () –> như mình nói ở trên thì trong web.php không cần gọi : use 

Nếu trong controller thì ta phải gọi use Illuminate\Support\Facades\Schema nhé!;

Các lệnh thường dùng trong Schema Builder.

Tạo bảng

chú ý : increments,string…v.v là kiểu dữ liệu của trường muốn tạo trong bảng

kiểu dữ liệu cho các trường trong bảng:

Kiểu dữ liệu Miêu tả
$table->bigIncrements('id');                       Thuộc kiểu “BIGINT” và là khoá chính
$table->bigInteger('votes'); Thuộc kiểu “BIGINT”
$table->binary('data'); Thuộc kiểu BLOB
$table->boolean('confirmed'); Thuộc kiểu BOOLESE
$table->char('name', 4); Thuôc kiểu CHAR(4)
$table->date('created_at'); Thuôc kiểu Date
$table->dateTime('created_at'); Thuôc kiểu DateTime
$table->decimal('amount', 5, 2); Thuôc kiểu DECIMAL
$table->double('column', 15, 8);  Thuôc  double kiểu tương đương với độ chính xác, tổng cộng 15 chữ số và 8 chữ số sau dấu thập phân
$table->float('amount'); Thuôc kiểu FLOAT
$table->increments('id'); Tăng ID vào bảng (khóa chính)
$table->integer('votes'); Thuôc kiểu INT
$table->json('options'); Thuôc kiểu JSON
$table->jsonb('options'); Thuôc kiểu JSONB
$table->longText('description'); Thuôc kiểu LONGTEXT
$table->mediumInteger('numbers'); Thuôc kiểu MEDIUMINT
$table->mediumText('description'); Thuôc kiểu MEDIUMTEXT
$table->smallInteger('votes'); Thuôc kiểu SMALLINT
$table->tinyInteger('numbers'); Thuôc kiểu TINYINT
$table->string('email'); Cột tương đương VARCHAR
$table->string('name', 100); Thuôc kiểu VARCHAR (100)
$table->text('description'); Thuôc kiểu Text
$table->time('sunrise'); Thuôc kiểu Time
$table->timestamp('added_on'); Thuôc kiểu TIMESTAMP
$table->timestamps(); Thêm các 2 cột created_at và update_at
$table->rememberToken(); Thêm cột remember_tokendưới dạng VARCHAR (100) NULL

Đổi tên bảng

Cú Pháp:

VD: Đổi bảng users thành admin.

Xóa bảng

Cú Pháp:

 

VD: Xóa bảng users.

 

Thêm cột vào bảng xác định

Cú Pháp:

 

VD: Thêm cột email với kiểu dữ liệu varchar.

 

Đổi tên cột

 

VD: Đổi cột email trong bảng users thành user_mail.

 

Thay đổi thuộc tính của 1 cột

chạy lệnh : composer require doctrine/dbal (cài thư viện doctrine )

sau khi cái doctrine thì sẽ không bị lỗi nhé ^^

//đổi chiều dài email=50

Xóa cột

Cú Pháp:

VD: xóa cột email trong bảng users.

 

Điều kiện cho các trường trong bảng

Cú Pháp:

Câu lệnh Mô tả
->nullable(); Cho phép giá trị null
->default($value) // $value là giá trị mặc định Gán giá trị mặc định cho cột
->unsigned() Đặt unsigned cho interger

Tạo khóa ngoại

 

Trong ví dụ này:user_idcột tham chiếu cột id trên bảng users. Hãy chắc chắn bạn đã tạo cột khóa ngoại đầu tiên sau đó mới liên kết nhé!

Bạn cũng có thể chỉ định các tùy chọn cho các hành động “xóa” và “cập nhật” của ràng buộc:

 

Thêm onDelete('cascade'); khi xoá dữ liệu khoá chính thì khoá ngoại tương ứng cũng bị cũng bị xoá theo

Vd: Mình sẽ thêm cột users_id của bảng posts làm khóa ngoại trên bảng users.

 

Hoặc mình muốn khi xóa mội users thì đồng thời sẽ xóa hết các bài đăng của users đó đi thì .

 

Xóa khóa ngoại

Cú Pháp:

 

VD: Mình xóa khóa ngoại ở ví dụ trên đi.

 

Chúc mọi người học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây