Làm cách nào để tạo di chuyển bằng Laravel?

Di chuyển Laravel cho phép bạn thay đổi cơ sở dữ liệu của mình thông qua mã PHP. Có cơ sở dữ liệu dưới dạng mã cho phép bạn dễ dàng kiểm soát phiên bản cơ sở dữ liệu của mình. Hướng dẫn này sẽ chỉ cho bạn cách tạo di chuyển cơ sở dữ liệu Laravel

Mục lục

Tại sao nên sử dụng Laravel Migration?

Di chuyển cơ sở dữ liệu Laravel

  • Nó giúp người dùng không cần phải qua lại giữa ứng dụng và cơ sở dữ liệu để định cấu hình và kiểm tra ứng dụng của họ
  • Nó cho phép triển khai nhanh các ứng dụng Laravel. Do đó, người dùng chỉ cần chạy một lệnh để triển khai ứng dụng của họ vào sản xuất

Hướng dẫn này giả định rằng bạn đã có một dự án Laravel cơ bản và thiết lập cơ sở dữ liệu

Di chuyển Laravel. Một lời giới thiệu

Di chuyển là một tệp chứa lớp di chuyển đại diện cho một thay đổi trong cơ sở dữ liệu. Và, những thay đổi này thường bao gồm các hành động cho phép bạn tạo, xóa hoặc cập nhật bảng hoặc cột trong bảng. Ngoài ra, bạn có thể theo dõi Di chuyển Laravel tại thời điểm tạo. Do đó, bạn phải tránh thực hiện các thay đổi trực tiếp đối với lược đồ cơ sở dữ liệu nếu bạn sử dụng di chuyển

Làm cách nào để tạo di chuyển bằng Laravel?

Thực hiện lần di chuyển đầu tiên của bạn

Đầu tiên, điều hướng đến thư mục gốc của dự án Laravel của bạn

Sau đó, bạn có thể chạy lệnh sau

php artisan make:migration <migration_name>

Bạn có thể thay thế migration_name bằng tên di chuyển của bạn. Hơn nữa, quá trình di chuyển của bạn được lưu trữ trong thư mục. /cơ sở dữ liệu/di chuyển/

Laravel sẽ sử dụng quy ước đặt tên year_month_day_time_create_products_table này để lưu trữ quá trình di chuyển của bạn. Vì vậy, một bảng được gọi là. create_products_table, chẳng hạn sẽ được lưu dưới dạng. 2021_07_15_151222_create_products_table

Quy ước đặt tên này rất quan trọng vì nó theo dõi quá trình di chuyển. Ngoài ra, nó cũng hữu ích khi người dùng cần khôi phục các thay đổi

Nội dung của tập tin này sẽ giống như thế này

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}

Để chạy di chuyển, hãy sử dụng lệnh sau

php artisan migrate

Để hoàn tác lần di chuyển cuối cùng, hãy chạy lệnh sau

php artisan migrate:rollback

Hiểu lớp di chuyển

Lớp di chuyển chứa hai phương thức. lên và xuống(). Bạn sử dụng các phương thức này để thực hiện hoặc khôi phục các thay đổi trong cơ sở dữ liệu

Lệnh di chuyển Artisan sẽ gọi phương thức up(). Ngược lại, lệnh rollback của Artisan sẽ thực hiện tất cả phương thức down(). Do đó, khi thiết lập di chuyển, nên viết mã cho cả lên và xuống

Việc di chuyển sử dụng Lược đồ mặt tiền của Laravel để tương tác với cơ sở dữ liệu

Phương thức tạo được sử dụng để tạo một bảng mới và đối số đầu tiên là tên của bảng. Đối số thứ hai là một hàm chấp nhận bản thiết kế bảng làm đối số. Đối tượng bản thiết kế này đại diện cho bảng trong cơ sở dữ liệu. Bạn có thể sử dụng nó để thay đổi cột theo yêu cầu

Schema facade có nhiều phương thức hữu ích có thể được sử dụng bên trong các phương thức up() và down(). Hầu hết các phương pháp này là tự giải thích

create(string $table, \Closure $callback)
createDatabase(string $name)
disableForeignKeyConstraints()
drop(string $table)
dropDatabaseIfExists(string $name)
dropIfExists(string $table)
enableForeignKeyConstraints()
rename(string $from, string $to)
table(string $table, \Closure $callback)
hasColumn(string $table, string $column)
hasColumns(string $table, array $columns)
dropColumns(string $table, array $columns)
hasTable(string $table)
defaultStringLength(int $length)
registerCustomDoctrineType(string $class, string $name, string $type)
getColumnListing(string $table) 

Nhấp để tìm hiểu về các phương pháp có sẵn trên Schema builder

Làm việc với các cột

Hãy xem cách bạn sử dụng các đối tượng bản thiết kế bảng để tạo các cột. Đầu tiên, bạn tạo bằng các phương pháp khác nhau

Tham quan

cột ID

Laravel có phương thức id() tích hợp, bạn có thể sử dụng phương thức này để tạo cột ID tăng tự động. Cột ID chứa các giá trị int xác định duy nhất bản ghi. Một mã mẫu có thể trông như thế này

Schema::create('products', function (Blueprint $table) {
            $table->id();
        });

Phương thức id giống như phương thức bigIncrements()

Cột dấu thời gian

Phương thức timestamps() tạo ra hai cột, created_at và updated_at. Cả hai cột này đều phổ biến trong hầu hết các ứng dụng web. Bên trong phương thức Schema, bạn có thể sử dụng dấu thời gian() như

$table->timestamps();

cột văn bản

Tiếp theo, chúng ta sẽ xem xét phương thức text(string $name) được sử dụng để tạo cột văn bản. Một số biến thể của cột văn bản bao gồm tinyText() và longText()

Xem bên dưới cách chúng được sử dụng

$table->text('column_name');
$table->tinyText('column_name');
$table->longText('column_name');

Tương tự, bạn có thể sử dụng các phương pháp sau

  • int(chuỗi tên $)
  • float(chuỗi $name [int $precision, [int $scale]])
  • double(string $name, [int $precision, [int $scale]])
  • enum(chuỗi $name, mảng $accepted_values)
  • gia số (chuỗi tên $)
  • thời gian (chuỗi $name, $precision)

Công cụ sửa đổi cột

Khi tạo cột, bạn cũng có thể sử dụng các phương thức sửa đổi cột. Phương thức sửa đổi cột sẽ thiết lập các thuộc tính và vị trí của cột. Ví dụ: bên dưới cho biết cách sử dụng một số công cụ sửa đổi này

________số 8_______

Để có danh sách đầy đủ, hãy truy cập

Tùy chọn di chuyển hữu ích

Khi sử dụng lệnh di chuyển, bạn có một số tùy chọn có giá trị để làm cho cuộc sống dễ dàng hơn

Lệnh sau cung cấp cho bạn bản tóm tắt về các lần di chuyển đã thực hiện

php artisan migrate:status

Kết quả

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
0

Sau đó, để quay lại thao tác di chuyển mới nhất, hãy sử dụng lệnh sau

php artisan migrate:rollback

Hoặc, bạn có thể muốn khôi phục một số lần di chuyển hạn chế. Ví dụ bên dưới sẽ khôi phục năm lần di chuyển cuối cùng

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
2

Ngoài ra, bạn có thể muốn khôi phục tất cả các lần di chuyển của mình. Lệnh này sau đó sẽ thực hiện lệnh di chuyển, tạo lại toàn bộ cơ sở dữ liệu của bạn

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
3

Một lệnh điển hình khác là “di chuyển. tươi” lệnh. Bạn có thể sử dụng lệnh này để bỏ tất cả các bảng của mình và chạy tất cả các lần di chuyển. Tuy nhiên, lưu ý rằng điều này khác với lệnh làm mới. Bản mới không chạy lùi bất kỳ thay đổi nào và loại bỏ tất cả các bảng

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
4

Cuối cùng, bạn có thể sử dụng kết xuất lược đồ để tạo kết xuất SQL cho cơ sở dữ liệu của mình. Vì vậy, Laravel sẽ lưu trữ kết xuất trong thư mục cơ sở dữ liệu/lược đồ của ứng dụng của bạn. Ngoài ra, bạn có thể sử dụng cờ –prune để xóa các tệp di chuyển

Điều này hữu ích nếu bạn muốn tránh làm lộn xộn thư mục di chuyển của mình. Sau đó, vào lần di chuyển tiếp theo, tệp SQL này sẽ được thực thi trước, sau đó là quá trình di chuyển. Tuy nhiên, xin lưu ý rằng điều này chỉ xảy ra khi không có lần di chuyển nào khác được thực hiện

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
5

Bạn cũng có thể quan tâm

  • Bắt đầu với Laravel Artisan CLI
  • Cách cài đặt dự án Laravel
  • Plugin tốt nhất để hỗ trợ SEO WordPress của bạn
  • Xác định nguyên nhân của quá nhiều kết nối trong MySQL/MariaDB
  • Cách xem lỗi shell_exec() trong PHP

(Các) Nguồn

  • Tài liệu di chuyển Laravel
  • Hướng dẫn cơ sở dữ liệu Laravel
  • Các kiểu dữ liệu MySQL


Giới thiệu về tác giả

Nhóm biên tập của Anto cũng yêu thích đám mây như bạn. Mỗi thành viên trong nhóm biên tập của Anto đều là chuyên gia về Đám mây theo cách riêng của họ. Anto Online rất tự hào trong việc giúp đỡ những người đam mê Cloud. Hãy cho chúng tôi biết nếu bạn có ý tưởng tuyệt vời cho chủ đề tiếp theo. Liên hệ với Anto Online nếu bạn muốn đóng góp

Làm cách nào để chạy di chuyển trong Laravel?

Để xem các lệnh di chuyển, hãy mở cửa sổ Git bash và nhập lệnh "php artisan list". Lệnh này liệt kê tất cả các lệnh có sẵn trong Laravel. .
di cư. tươi
di cư. Tải về
di cư. Làm tươi
di cư. cài lại
di cư. phục hồi
di cư. tình trạng

Làm cách nào để tạo bảng di chuyển trong Laravel?

Cách tạo bảng bằng Di chuyển trong Laravel? .
nghệ nhân php làm. di chuyển tạo_posts_table
nghệ nhân php di chuyển
nghệ nhân php làm. di chuyển create_posts_table --table=posts
nghệ nhân php di chuyển --path=/database/migrations/2020_04_01_064006_create_posts_table. php
nghệ nhân php di chuyển. phục hồi

Làm cách nào để tạo mô hình và di chuyển trong Laravel?

Điều hướng đến thư mục dự án của bạn và chạy các lệnh sau để tạo mới. .
Mô hình. nghệ nhân php làm. lập mô hình YourModelName
Bộ điều khiển. nghệ nhân php làm. bộ điều khiển YourControllerName
di cư. nghệ nhân php làm. di chuyển tạo_users_table

Làm cách nào để tạo di chuyển trong Laravel 9?

Cấu trúc di chuyển .
sử dụng Chiếu sáng\Cơ sở dữ liệu\Di chuyển\Di chuyển;
sử dụng Chiếu sáng\Cơ sở dữ liệu\Schema\Bản thiết kế;
trả lại lớp mới mở rộng Di chuyển
* Chạy di chuyển. *
* @return vô hiệu
chức năng công khai lên() {
Lược đồ. tạo ('chuyến bay', chức năng (Bản thiết kế $table) { $table->id();