Schema
Schema Builder là một class giúp chúng ta làm việc với các cơ sở dữ liệu với các hàm định sẵn.
Table
Tạo Table
Để tạo một bảng cơ sở dữ liệu mới, hãy sử dụng phương thức create trên Schema Facade.
Phương thức create chấp nhận hai đối số:
| Arguments | Type | Description |
|---|---|---|
| $table | string | Tên của bảng |
| $closure | closure | closure nhận đối tượng Blueprint có thể được sử dụng để xác định bảng mới |
schema()->create('users', function (Illuminate\Database\Schema\Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->timestamps();
});
Khi tạo bảng, bạn có thể sử dụng bất kỳ column methods nào của blueprint để xác định các cột của bảng
Kiểm tra sự tồn tại của Table / Column
Bạn có thể kiểm tra sự tồn tại của table bằng method hasTable
if (schema()->hasTable('users')) {
//The "users" table exists...
}
Bạn có thể kiểm tra sự tồn tại của Column bằng method hasColumn
if (schema()->hasColumn('users', 'email')) {
// The "users" table exists and has an "email" column...
}
Cập nhật Table
Phương thức table trên schema có thể được sử dụng để cập nhật các table hiện có.
Giống như phương create, phương thức bảng chấp nhận hai đối số:
| Arguments | Type | Description |
|---|---|---|
| $table | string | Tên của bảng cần cập nhật |
| $closure | closure | closure nhận đối tượng Blueprint mà bạn có thể sử dụng để thêm cột hoặc chỉ mục vào bảng |
schema()->table('users', function (Illuminate\Database\Schema\Blueprint $table) {
$table->integer('votes');
});
Đổi tên Table / Xóa Table
Để đổi tên table cơ sở dữ liệu hiện có, hãy sử dụng phương thức rename :
schema()->rename($from, $to);
| Arguments | Type | Description |
|---|---|---|
| $from | string | Tên của bảng cần đổi |
| $to | string | Tên mới của bảng |
Để xóa một table hiện có, bạn có thể sử dụng các phương thức drop hoặc dropIfExists:
schema()->drop('users');
schema()->dropIfExists('users');
Column
Các loại columns có sẵn
schema Blueprint cung cấp nhiều phương thức tương ứng với các loại cột khác nhau mà bạn có thể thêm vào bảng cơ sở dữ liệu của mình. Mỗi phương pháp có sẵn được liệt kê trong bảng dưới đây:
bigIncrements()
Phương thức bigIncrements tạo cột tương đương UNSIGNED BIGINT (khóa chính) tự động tăng:
$table->bigIncrements('id');
bigInteger()
Phương thức bigInteger tạo cột tương đương BIGINT
$table->bigInteger('votes');
binary()
Phương thức binary tạo một cột tương đương BLOB:
$table->binary('photo');
boolean()
Phương thức boolean tạo cột tương đương BOOLEAN:
$table->boolean('confirmed');
char()
The char method creates a CHAR equivalent column with of a given length:
$table->char('name', 100);
dateTimeTz()
Phương thức dateTimeTz tạo cột tương đương DATETIME (có múi giờ) với độ chính xác tùy chọn (tổng digits):
$table->dateTimeTz('created_at', $precision = 0);
dateTime()
Phương thức dateTime tạo cột tương đương DATETIME với độ chính xác tùy chọn (tổng digits):
$table->dateTime('created_at', $precision = 0);
date()
Phương thức date tạo cột tương đương DATE:
$table->date('created_at');
decimal()
Phương thức decimal tạo một cột tương đương DECIMAL với độ chính xác cho trước (tổng chữ số) và tỷ lệ (chữ số thập phân):
$table->decimal('amount', $precision = 8, $scale = 2);
double()
Phương thức double tạo một cột tương đương DOUBLE với độ chính xác cho trước (tổng chữ số) và tỷ lệ (chữ số thập phân):
$table->double('amount', 8, 2);
enum()
Phương thức enum tạo một cột tương đương ENUM với các giá trị hợp lệ đã cho:
$table->enum('difficulty', ['easy', 'hard']);
float()
Phương thức float tạo một cột tương đương FLOAT với độ chính xác cho trước (tổng chữ số) và chữ số thập phân:
$table->float('amount', 8, 2);
foreignId()
Phương thức foreignId tạo một cột tương đương UNSIGNED BIGINT:
$table->foreignId('user_id');
foreignUlid()
Phương thức foreignUlid tạo cột tương đương ULID:
$table->foreignUlid('user_id');
foreignUuid()
Phương thức foreignUuid tạo cột tương đương UUID:
$table->foreignUuid('user_id');
geometryCollection()
Phương thức geometryCollection tạo ra một cột tương đương GEOMETRYCOLLECTION :
$table->geometryCollection('positions');
geometry()
Phương thức geometry tạo ra một cột tương đương GEOMETRY:
$table->geometry('positions');
id()
Phương thức id là bí danh của phương thức bigIncrements. Theo mặc định, phương thức sẽ tạo cột id; tuy nhiên, bạn có thể chuyển tên cột nếu bạn muốn gán một tên khác cho cột:
$table->id();
increments()
Phương thức increments tạo ra một cột tương đương UNSIGNED INTEGER tự động tăng làm primary key:
$table->increments('id');
integer()
Phương thức integer tạo một cột tương đương INTEGER:
$table->integer('votes');
json()
Phương thức json tạo một cột tương đương JSON:
$table->json('options');
jsonb
Phương thức jsonb tạo một cột tương đương JSONB:
$table->jsonb('options');
lineString
Phương thức lineString tạo cột tương đương LINESTRING:
$table->lineString('positions');
longText
Phương thức longText tạo cột tương đương LONGTEXT:
$table->longText('description');
macAddress
Phương thức macAddress tạo một cột dùng để chứa địa chỉ MAC. Một số hệ thống cơ sở dữ liệu, chẳng hạn như PostgreSQL, có loại cột dành riêng cho loại dữ liệu này. Các hệ thống cơ sở dữ liệu khác sẽ sử dụng cột tương đương với chuỗi:
$table->macAddress('device');
mediumIncrements
Phương thức MediumIncrements tạo cột tương đương UNSIGNED MEDIUMINT tăng tự động làm primary key:
$table->mediumIncrements('id');
mediumInteger
Phương thức MediumInteger tạo cột tương đương MEDIUMINT:
$table->mediumInteger('votes');
mediumText
Phương thức MediumText tạo cột tương đương MEDIUMTEXT:
$table->mediumText('description');
multiLineString
Phương thức multiLineString tạo cột tương đương MULTILINESTRING:
$table->multiLineString('positions');
multiPoint
Phương thức multiPoint tạo cột tương đương MULTIPOINT:
$table->multiPoint('positions');
multiPolygon
Phương thức multiPolygon tạo cột tương đương MULTIPOLYGON:
$table->multiPolygon('positions');
nullableTimestamps
Phương thức nullableTimestamps là bí danh của phương thức timestamps:
$table->nullableTimestamps(0);
point
Phương thức point tạo cột tương đương POINT:
$table->point('position');
polygon
Phương thức polygon tạo một cột tương đương POLYGON:
$table->polygon('position');
rememberToken
Phương thức RememberToken tạo một cột tương đương VARCHAR(100) có thể rỗng, nhằm lưu trữ mã thông báo xác thực "remember" hiện tại:
$table->rememberToken();
set
Phương thức set tạo một cột tương đương SET với danh sách các giá trị hợp lệ đã cho:
$table->set('flavors', ['strawberry', 'vanilla']);
smallIncrements
Phương thức SmallIncrements tạo một cột tương đương UNSIGNED SMALLINT tự động tăng làm primary key:
$table->smallIncrements('id');
smallInteger
Phương thức SmallInteger tạo một cột tương đương SMALLINT:
$table->smallInteger('votes');
string
Phương thức string tạo cột tương đương VARCHAR có độ dài cho trước:
$table->string('name', 100);
text
Phương thức text tạo một cột tương đương TEXT:
$table->text('description');
timeTz
Phương thức timeTz tạo cột tương đương TIME (có múi giờ) với độ chính xác tùy chọn (tổng chữ số):
$table->timeTz('sunrise', $precision = 0);
time
Phương thức time tạo cột tương đương TIME với độ chính xác tùy chọn (tổng chữ số):
$table->time('sunrise', $precision = 0);
timestampTz
Phương thức timestampTz tạo cột tương đương TIMESTAMP (có múi giờ) với độ chính xác tùy chọn (tổng chữ số):
$table->timestampTz('added_at', $precision = 0);
timestamp
Phương thức timestamp tạo cột tương đương TIMESTAMP với độ chính xác tùy chọn (tổng chữ số):
$table->timestamp('added_at', $precision = 0);