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);