Schema Builder trong laravel

Schema Builder trong laravel
5 (100%) 1 vote

Giới thiệu

Lớp  Schema trong Laravel cung cấp cơ chế thao tác với bảng CSDL. Nó làm việc với tất cả CSDL mà Laravel hổ trợ, và thông qua những hàm API của hệ thống.

Tạo và xóa bảng

Đề tạo một bảng mới ta sử dụng phương thức Schema::create

Để đổi tên một bảng CSDL đã tồn tại ta sử dụng phương thức rename

Để xóa bảng, ta sử dụng phương thức drop

Thêm cột

Để cập nhật một bảng tồn tại, chúng ta sẽ sử dụng phương thức

Dưới đây là giá trị ràng buộc cho những loại cột mà bạn sẽ sử dụng để tạo nên bảng

Command Description
$table->bigIncrements(‘id’); Incrementing ID using a “big integer” equivalent.
$table->bigInteger(‘votes’); BIGINT equivalent to the table
$table->binary(‘data’); BLOB equivalent to the table
$table->boolean(‘confirmed’); BOOLEAN equivalent to the table
$table->char(‘name’, 4); CHAR equivalent with a length
$table->date(‘created_at’); DATE equivalent to the table
$table->dateTime(‘created_at’); DATETIME equivalent to the table
$table->decimal(‘amount’, 5, 2); DECIMAL equivalent with a precision and scale
$table->double(‘column’, 15, 8); DOUBLE equivalent with precision
$table->enum(‘choices’, array(‘foo’, ‘bar’)); ENUM equivalent to the table
$table->float(‘amount’); FLOAT equivalent to the table
$table->increments(‘id’); Incrementing ID to the table (primary key).
$table->integer(‘votes’); INTEGER equivalent to the table
$table->longText(‘description’); LONGTEXT equivalent to the table
$table->mediumInteger(‘numbers’); MEDIUMINT equivalent to the table
$table->mediumText(‘description’); MEDIUMTEXT equivalent to the table
$table->morphs(‘taggable’); Adds INTEGER taggable_id and STRINGtaggable_type
$table->nullableTimestamps(); Same as timestamps(), except allows NULLs
$table->smallInteger(‘votes’); SMALLINT equivalent to the table
$table->tinyInteger(‘numbers’); TINYINT equivalent to the table
$table->softDeletes(); Adds deleted_at column for soft deletes
$table->string(’email’); VARCHAR equivalent column
$table->string(‘name’, 100); VARCHAR equivalent with a length
$table->text(‘description’); TEXT equivalent to the table
$table->time(‘sunrise’); TIME equivalent to the table
$table->timestamp(‘added_on’); TIMESTAMP equivalent to the table
$table->timestamps(); Adds created_at and updated_at columns
$table->rememberToken(); Adds remember_token as VARCHAR(100) NULL
->nullable() Designate that the column allows NULL values
->default($value) Declare a default value for a column
->unsigned() Set INTEGER to UNSIGNED

Đổi tên cột

Để đổi tên cột, bạn sử dụng phương thức renameColumn trong  Schema builder. Trước khi đổi tên cột bạn chắc chắn đã thêm doctrine/dbal vào file composer.json

Xóa cột

Xóa nhiều cột từ bảng CSDL

Kiểm tra sự tồn tại

Bạn dẽ dang để kiểm tra sự tồn tại của bảng hay cột sử dụng phương thức  hasTable và hasColumn

Kiểm tra sự tồn tại của bảng

Kiểm tra sự tồn tại của cột

Thêm chỉ mục vào

Schema builder hổ trợ một vài lại chỉ mục. Ở đây có 2 cách để thêm vào chúng. Trước tiên ban tạo chúng và định nghĩa trên cột của chúng, hoặc bạn có thể thêm chúng một cách riêng lẽ.

Khóa ngoại

Laravel cũng hổ trợ việc thêm khóa ngoại đến bảng của bạn

Bạn cũng có thể cho “on delete” và “on update” trên ràng buộc của bạn

Đề xóa khóa ngoại, bạn sử dụng phương thức dropForeign

Xóa chỉ mục

Command Description
$table->dropPrimary(‘users_id_primary’); Dropping a primary key from the “users” table
$table->dropUnique(‘users_email_unique’); Dropping a unique index from the “users” table
$table->dropIndex(‘geo_state_index’); Dropping a basic index from the “geo” table

Tag: laravel taggable, laravel dropforeign