Trong bài học này mình sẽ cùng các bạn tìm hiểu một thuật ngữ mới nữa liên quan đến thao tác với cơ sở dữ liệu trong Laravel đó là Schema Builder. Chúng ta cùng tìm hiểu ngay nhé!
1. Schema Builder trong Laravel là gì?
Schema Builder là một lớp (class) nằm trong bộ Facades của Laravel 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.
Schema Builder thường được kết hợp với Migrations để 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ó
Illuminate\Support\Facades\Schema
2. Các lệnh thường dùng trong Schema Builder.
2.1 Tạo bảng.
Cú pháp:
Schema::table('tablename', function ($table) {
//code
});
Vd: Tạo bảng users.
Schema::table('users', function ($table) {
//code
});
2.2 Đổi tên bảng.
Cú Pháp:
Schema::rename($from, $to);
VD: Đổi bảng users thành admin.
Schema::rename('users','admin');
2.3 Xóa bảng.
Cú Pháp:
Schema::drop('tableName');
//hoac
Schema::dropIfExists('tableName');
VD: Xóa bảng users.
Schema::drop('users');
//hoặc
Schema::dropIfExists('users');
2.4 Thêm cột.
Cú Pháp:
Schema::table('tableName', function ($table) {
$table->typeData('columnName');
});
VD: Thêm cột email với kiểu dữ liệu vachar.
Schema::table('users', function ($table) {
$table->string('email');
});
->Chú ý: Các kiểu dữ liệu mình sẽ nói rõ hơn ở bài sau.
2.5 Đổi tên cột.
Schema: table('tableName', function ($table) {
$table->renameColumn('from', 'to');
});
VD: Đổi cột email trong bảng users thành usermail.
Schema::table('users', function ($table) {
$table->renameColumn('email', 'usermail');
});
2.6 Xóa cột.
Cú Pháp:
Schema::table('tableName', function ($table) {
$table->dropColumn('columnName');
//hoặc xóa nhiều cột cùng lúc.
$table->dropColumn(['columnName1','columnName2','columnName3']);
});
VD: xóa cột email trong bảng users.
Schema::table('users', function ($table) {
$table->dropColumn('email');
});
2.7 Tạo index.
Cú Pháp:
$table->index('coumnName');
Các kiểu Index.
Cú pháp | Mô tả |
---|---|
table->primary('id'); | Add a primary key. |
table->primary(['first', 'last']); | Add composite keys. |
$table->unique('email'); | Add a unique index. |
$table->unique('state', 'my_index_name'); | Add a custom index name. |
$table->unique(['first', 'last']); | Add a composite unique index. |
$table->index('state'); | Add a basic index. |
VD: mình sẽ đánh unique index cho cột email.
$table->unique('email');
2.8 Xóa Index.
Cú Pháp:
Cú Pháp | Mô Tả |
---|---|
$table->dropPrimary('users_id_primary'); | Drop a primary key from the "users" table. |
$table->dropUnique('users_email_unique'); | Drop a unique index from the "users" table. |
$table->dropIndex('geo_state_index'); | Drop a basic index from the "geo" table. |
2.9 Thêm khóa ngoại.
Cú Pháp:
Schema::table('tableName', function ($table) {
$table->integer('conmName')->unsigned();
$table->foreign('Conmumname')->references('columnName')->on('tableName2');
});
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.
Schema::table('posts', function ($table) {
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('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ì .
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
2.10 Xóa khóa ngoại.
Cú Pháp
$table->dropForeign('columnName');
VD: Mình xóa khóa ngoại ở ví dụ trên đi.
$table->dropForeign('user_id');
5. Lời kết.
Vậy là chúng ta đã điểm danh 1 loạt các thao tác với lớp Schema Buider trong Laravel rồi đấy. Hi vọng các thao tác với lớp Schema Buider trong Laravel này sẽ hữu ích đối với bạn. Chúc các bạn học tốt!