Thứ năm, 13/02/2020 | 00:00 GMT+7

Cách sử dụng Di chuyển database và Trình seeding để Thiết lập database Tóm tắt trong Laravel

Migrations và seeders là những tiện ích database mạnh mẽ được cung cấp bởi framework Laravel PHP để cho phép các nhà phát triển nhanh chóng khởi động, phá hủy và tạo lại database của ứng dụng. Các tiện ích này giúp giảm thiểu các vấn đề về sự không nhất quán của database có thể phát sinh với nhiều nhà phát triển làm việc trên cùng một ứng dụng: những người đóng góp mới chỉ cần chạy một vài lệnh artisan để cài đặt database trên một bản cài đặt mới.

 

Trong hướng dẫn này, ta sẽ tạo các di chuyển và trình seeding để đưa vào database của ứng dụng demo Laravel với dữ liệu mẫu. Cuối cùng, bạn có thể hủy và tạo lại các bảng database của bạn bao nhiêu lần tùy thích, chỉ bằng các lệnh artisan .

Yêu cầu

Để làm theo hướng dẫn này, bạn cần:

Lưu ý : Trong hướng dẫn này, ta sẽ sử dụng môi trường phát triển được chứa trong containers do Docker Compose quản lý để chạy ứng dụng, nhưng bạn cũng có thể chọn chạy ứng dụng trên server LEMP. Để cài đặt điều này, bạn có thể làm theo hướng dẫn của ta về Cách cài đặt và cấu hình Laravel với LEMP trên Ubuntu 18.04 .

Bước 1 - Lấy ứng dụng Demo

Để bắt đầu, ta sẽ tìm nạp ứng dụng Laravel demo từ kho lưu trữ GitHub của nó. Ta quan tâm đến nhánh tutorial-02 , bao gồm cài đặt Docker Compose để chạy ứng dụng trên containers . Trong ví dụ này, ta sẽ tải ứng dụng xuống folder chính của ta , nhưng bạn có thể sử dụng bất kỳ folder nào bạn chọn:

  • cd ~
  • curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-2.0.1.zip -o travellist.zip

Bởi vì ta đã tải về mã ứng dụng như một .zip file , ta cần unzip lệnh để extract nó. Nếu gần đây bạn chưa làm như vậy, hãy cập nhật index gói local của máy:

  • sudo apt update

Sau đó cài đặt gói unzip :

  • sudo apt install unzip

Sau đó, extract nội dung của ứng dụng:

  • unzip travellist.zip

Sau đó đổi tên folder đã extract thành travellist-demo để truy cập dễ dàng hơn:

  • mv travellist-laravel-demo-tutorial-2.0.1 travellist-demo

Trong bước tiếp theo, ta sẽ tạo file cấu hình .env để cài đặt ứng dụng.

Bước 2 - Cài đặt file .env của ứng dụng

Trong Laravel, file .env được sử dụng để cài đặt cấu hình phụ thuộc vào môi trường , chẳng hạn như thông tin xác thực và bất kỳ thông tin nào có thể khác nhau giữa các lần triển khai. Tệp này không có trong kiểm soát sửa đổi.

Cảnh báo : Tệp cấu hình môi trường chứa thông tin nhạy cảm về server của bạn, bao gồm thông tin đăng nhập database và khóa bảo mật. Vì lý do đó, bạn không nên chia sẻ công khai file này.

Các giá trị có trong file .env sẽ được ưu tiên hơn các giá trị được đặt trong file cấu hình thông thường nằm trong folder config . Mỗi cài đặt trên môi trường mới yêu cầu file môi trường được điều chỉnh để xác định những thứ như cài đặt kết nối database , tùy chọn gỡ lỗi và URL ứng dụng, trong số các mục khác có thể khác nhau tùy thuộc vào môi trường ứng dụng đang chạy.

Điều hướng đến danh sách du lịch travellist-demo folder travellist-demo :

  • cd travellist-demo

Bây giờ ta sẽ tạo một file .env mới để tùy chỉnh các tùy chọn cấu hình cho môi trường phát triển mà ta đang cài đặt . Laravel đi kèm với một file .env ví dụ mà ta có thể sao chép để tạo file của riêng mình:

  • cp .env.example .env

Mở file này bằng nano hoặc editor mà bạn chọn:

  • nano .env

Đây là cách file .env của bạn bây giờ trông như thế nào:

.env
APP_NAME=Travellist APP_ENV=dev APP_KEY= APP_DEBUG=true APP_URL=http://localhost:8000   LOG_CHANNEL=stack  DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password

Dòng điện .env file từ travellist ứng dụng demo chứa các tùy chọn để sử dụng môi trường container ta đã tạo với Docker Soạn trong phần cuối cùng của loạt bài này. Bạn không cần phải thay đổi bất kỳ những giá trị này, nhưng bạn có thể tự do thay đổi DB_DATABASE , DB_USERNAMEDB_PASSWORD nếu bạn muốn, vì đây được kéo bởi ta docker-compose.yml file tự động để cài đặt database phát triển. Chỉ cần đảm bảo biến DB_HOST không thay đổi, vì nó tham chiếu đến tên của dịch vụ database của ta trong môi trường Docker Compose.

Nếu bạn thực hiện bất kỳ thay đổi nào đối với file , hãy nhớ lưu file đó bằng cách nhấn CTRL + X , Y , sau đó ENTER .

Lưu ý : Nếu bạn đã chọn chạy ứng dụng trên server LEMP , bạn cần thay đổi các giá trị được đánh dấu để phản ánh cài đặt database của bạn , bao gồm cả biến DB_HOST .

Bước 3 - Cài đặt phụ thuộc ứng dụng với trình soạn thảo

Bây giờ ta sẽ sử dụng Composer , công cụ quản lý phụ thuộc của PHP, để cài đặt các phụ thuộc của ứng dụng và đảm bảo ta có thể thực hiện các lệnh artisan .

Khởi động môi trường Docker Compose của bạn bằng lệnh sau.
Điều này sẽ xây dựng travellist hình ảnh cho app dịch vụ và kéo trong Docker image thêm theo yêu cầu của nginxdb dịch vụ, nhằm tạo môi trường ứng dụng:

  • docker-compose up -d
Output
Creating network "travellist-demo_travellist" with driver "bridge" Building app Step 1/11 : FROM php:7.4-fpm  ---> fa37bd6db22a Step 2/11 : ARG user  ---> Running in 9259bb2ac034 … Creating travellist-app   ... done Creating travellist-nginx ... done Creating travellist-db    ... done 

Thao tác này có thể mất vài phút để hoàn thành. Khi quá trình kết thúc, ta có thể chạy Composer để cài đặt các phụ thuộc của ứng dụng.

Để thực thi trình composer và các lệnh khác trong containers dịch vụ app , ta sẽ sử dụng trình thực thi trình composer docker-compose exec . Các exec lệnh cho phép ta thực hiện bất kỳ lệnh của sự lựa chọn của ta về container bằng Docker Soạn quản lý. Nó sử dụng cú pháp sau: lệnh docker-compose exec service_name command .

Lưu ý : Trong trường hợp bạn đã chọn sử dụng server LEMP để chạy ứng dụng demo, bạn nên bỏ qua phần docker-compose exec app thi do docker-compose exec app của các lệnh được liệt kê trong suốt hướng dẫn này. Ví dụ: thay vì chạy lệnh sau khi nó được viết, bạn sẽ chỉ chạy:

  • composer install

 

Để thực hiện composer install trong containers app , hãy chạy:

  • docker-compose exec app composer install
Output
Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 85 installs, 0 updates, 0 removals   - Installing doctrine/inflector (1.3.1): Downloading (100%)            - Installing doctrine/lexer (1.2.0): Downloading (100%)            - Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%)      … 

Khi Composer hoàn tất cài đặt các phụ thuộc của ứng dụng, bạn có thể thực hiện các lệnh artisan . Để kiểm tra xem ứng dụng có thể kết nối với database hay không, hãy chạy lệnh sau để xóa mọi bảng tồn tại từ trước:

  • docker-compose exec app php artisan db:wipe

Lệnh này sẽ loại bỏ bất kỳ bảng nào tồn tại từ trước trên database đã cấu hình. Nếu nó chạy thành công và ứng dụng có thể kết nối với database , bạn sẽ thấy kết quả như sau:

Output
Dropped all tables successfully. 

Đến đây bạn đã cài đặt các phụ thuộc của ứng dụng với Composer, bạn có thể sử dụng artisan cụ artisan công để tạo di chuyển và seeding .

Bước 4 - Tạo Di chuyển Database

Công cụ dòng lệnh artisan công đi kèm với Laravel chứa một loạt lệnh trợ giúp được dùng để quản lý ứng dụng và khởi động các lớp mới. Để tạo một lớp di chuyển mới, ta có thể sử dụng lệnh make:migration như sau:

  • docker-compose exec app php artisan make:migration create_places_table

Laravel suy ra thao tác được thực hiện ( create ), tên của bảng ( places ) và việc di chuyển này có tạo ra một bảng mới hay không, dựa trên tên mô tả được cung cấp cho lệnh make:migration .

Bạn sẽ thấy kết quả tương tự như sau:

Output
Created Migration: 2020_02_03_143622_create_places_table 

Thao tác này sẽ tạo một file mới trong folder database/migrations của ứng dụng. Dấu thời gian có trong file được tạo tự động được Laravel sử dụng để xác định việc di chuyển theo thứ tự nào nên được thực hiện.

Sử dụng editor mà bạn chọn để mở file di chuyển đã tạo. Hãy nhớ thay thế giá trị được đánh dấu bằng tên file di chuyển của bạn :

  • nano database/migrations/2020_02_03_143622_create_places_table.php

Tệp di chuyển được tạo chứa một lớp có tên là CreatePlacesTable :

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

Lớp này có hai phương thức: updown . Cả hai phương pháp đều chứa mã bootstrap mà bạn có thể mở rộng để tùy chỉnh những gì sẽ xảy ra khi quá trình di chuyển đó được thực thi và cả những gì sẽ xảy ra khi nó được khôi phục.

Ta sẽ sửa đổi phương pháp up để bảng places phản ánh cấu trúc mà ta đã sử dụng trong version ứng dụng hiện tại:

  • id : trường khóa chính.
  • name : tên của địa điểm.
  • visited : cho dù địa điểm này đã được ghé thăm hay chưa.

Trình tạo schemas Laravel trình bày các phương pháp tạo, cập nhật và xóa bảng trong database . Lớp Blueprint xác định cấu trúc của bảng và nó cung cấp một số phương thức để trừu tượng hóa định nghĩa của mỗi trường bảng.

Mã được tạo tự động cài đặt một trường id chính được gọi là id . Các timestamps phương pháp tạo ra hai datetime lĩnh vực mà sẽ tự động được cập nhật bởi các lớp database cơ bản khi dữ liệu được chèn hoặc cập nhật trong bảng đó. Ngoài những thứ này, ta cần bao gồm name và trường visited .

Trường name của ta sẽ có kiểu string và trường visited của ta sẽ được đặt bằng boolean . Ta cũng sẽ đặt giá trị mặc định là 0 cho trường visited , để nếu không có giá trị nào được chuyển, điều đó nghĩa là địa điểm đó chưa được truy cập. Đây là cách phương thức up sẽ giống như bây giờ:

database / migrations / 2020_02_03_143622_create_places_table.php
…     public function up()     {         Schema::create('places', function (Blueprint $table) {             $table->bigIncrements('id');             $table->string('name', 100);             $table->boolean('visited')->default(0);             $table->timestamps();         });     } … 

Lưu ý : Bạn có thể tìm thấy danh sách đầy đủ các loại cột có sẵn trong tài liệu Laravel .

Sau khi bao gồm hai dòng được đánh dấu trên tập lệnh di chuyển của bạn , hãy lưu file .

Quá trình di chuyển của bạn hiện đã sẵn sàng được thực hiện thông qua artisan migrate . Tuy nhiên, điều đó sẽ chỉ tạo ra một bảng trống; ta cũng cần có thể chèn dữ liệu mẫu để phát triển và thử nghiệm. Trong bước tiếp theo, ta sẽ xem cách thực hiện điều đó bằng cách sử dụng bộ tạo database .

Bước 5 - Tạo Database Seeders

Seeder là một lớp đặc biệt được sử dụng để tạo và chèn dữ liệu mẫu (hạt giống) vào database . Đây là một tính năng quan trọng trong môi trường phát triển, vì nó cho phép bạn tạo lại ứng dụng với một database mới, sử dụng các giá trị mẫu mà nếu không, bạn phải chèn thủ công mỗi khi database được tạo lại.

Bây giờ ta sẽ sử dụng lệnh artisan để tạo một lớp trình tạo hạt mới cho bảng places của ta có tên là PlacesTableSeeder :

  • docker-compose exec app php artisan make:seeder PlacesTableSeeder

Lệnh sẽ tạo một file mới có tên là PlacesTableSeeder.php bên trong folder database/seeds . Mở file đó bằng editor mà bạn chọn:

  • nano database/seeds/PlacesTableSeeder.php

Đây là giao PlacesTableSeeder.php file PlacesTableSeeder.php được tạo tự động:

cơ sở dữ liệu / hạt giống / PlacesTableSeeder.php
<?php  use Illuminate\Database\Seeder;  class PlacesTableSeeder extends Seeder {     /**      * Run the database seeds.      *      * @return void      */     public function run()     {         //     } }  

Lớp seeder mới của ta chứa một phương thức trống có tên là run . Phương thức này sẽ được gọi khi lệnh db:seed Artisan được thực thi.

Ta cần chỉnh sửa phương thức run để bao gồm hướng dẫn chèn dữ liệu mẫu vào database . Ta sẽ sử dụng trình tạo truy vấn Laravel để hợp lý hóa quá trình này.

Trình tạo truy vấn Laravel cung cấp một giao diện thông thạo cho các hoạt động database như chèn, cập nhật, xóa và truy xuất dữ liệu. Nó cũng giới thiệu các biện pháp bảo vệ chống lại các cuộc tấn công SQL injection. Trình tạo truy vấn được hiển thị bởi mặt tiền DB - một proxy tĩnh cho các lớp database bên dưới trong containers dịch vụ.

Để bắt đầu, ta sẽ tạo một biến lớp tĩnh để chứa tất cả các vị trí mẫu mà ta muốn chèn vào database dưới dạng một mảng. Điều này sẽ cho phép ta sử dụng một vòng lặp foreach để lặp qua tất cả các giá trị, chèn từng giá trị vào database bằng cách sử dụng trình tạo truy vấn.

Ta sẽ gọi biến này $places :

cơ sở dữ liệu / hạt giống / PlacesTableSeeder.php
<?php  use Illuminate\Database\Seeder;  class PlacesTableSeeder extends Seeder {     static $places = [         'Berlin',         'Budapest',         'Cincinnati',         'Denver',         'Helsinki',         'Lisbon',         'Moscow',         'Nairobi',         'Oslo',         'Rio',         'Tokyo'     ];

Tiếp theo, ta cần bao gồm một câu lệnh use ở đầu lớp PlacesTableSeeder của ta để tạo điều kiện tham chiếu mặt tiền DB trong toàn bộ mã:

cơ sở dữ liệu / hạt giống / PlacesTableSeeder.php
<?php  use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB;  class PlacesTableSeeder extends Seeder … 

Bây giờ ta có thể lặp lại các giá trị mảng $places foreach vòng lặp foreach và chèn từng giá trị vào bảng places của ta bằng cách sử dụng trình tạo truy vấn:

cơ sở dữ liệu / hạt giống / PlacesTableSeeder.php
…     public function run()     {         foreach (self::$places as $place) {             DB::table('places')->insert([                 'name' => $place,                 'visited' => rand(0,1) == 1             ]);         }     }  

Vòng lặp foreach lặp qua từng giá trị của mảng tĩnh $places place. Ở mỗi lần lặp, ta sử dụng mặt tiền DB để chèn một hàng mới vào bảng places . Ta đặt trường name thành tên của địa điểm mà ta vừa lấy được từ mảng $places place và ta đặt trường visited thành giá trị ngẫu nhiên là 0 hoặc 1 .

Đây là giao diện của lớp PlacesTableSeeder đầy đủ sau tất cả các bản cập nhật:

cơ sở dữ liệu / hạt giống / PlacesTableSeeder.php
<?php  use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB;  class PlacesTableSeeder extends Seeder {     static $places = [         'Berlin',         'Budapest',         'Cincinnati',         'Denver',         'Helsinki',         'Lisbon',         'Moscow',         'Nairobi',         'Oslo',         'Rio',         'Tokyo'     ];      /**      * Run the database seeds.      *      * @return void      */     public function run()     {         foreach (self::$places as $place) {             DB::table('places')->insert([                 'name' => $place,                 'visited' => rand(0,1) == 1             ]);         }     } } 

Lưu file khi bạn thực hiện xong những thay đổi này.

Các lớp Seeder không được tải tự động trong ứng dụng. Ta cần chỉnh sửa lớp DatabaseSeeder chính để bao gồm một lệnh gọi tới trình seeding mà ta vừa tạo.

Mở file database/seeds/DatabaseSeeder.php bằng nano hoặc editor bạn quen dùng :

  • nano database/seeds/DatabaseSeeder.php

Các DatabaseSeeder vẻ lớp giống như bất kỳ seeder khác: nó kéo dài từ Seeder lớp và có run phương pháp. Ta sẽ cập nhật phương thức này để bao gồm lệnh gọi tới PlacesTableSeeder .

Cập nhật phương thức run hiện tại bên trong lớp DatabaseSeeder của bạn bằng cách xóa dòng được chú thích và thay thế nó bằng mã được đánh dấu sau:

cơ sở dữ liệu / hạt giống / DatabaseSeeder.php
…     public function run()     {         $this->call(PlacesTableSeeder::class);     } ... 

Đây là cách lớp DatabaseSeeder đầy đủ sẽ trông như thế nào sau khi cập nhật:

cơ sở dữ liệu / hạt giống / DatabaseSeeder.php
<?php  use Illuminate\Database\Seeder;  class DatabaseSeeder extends Seeder {     /**      * Seed the application's database.      *      * @return void      */     public function run()     {         $this->call(PlacesTableSeeder::class);     } }   

Lưu file khi bạn cập nhật xong nội dung của nó.

Bây giờ ta đã hoàn tất việc cài đặt cả quá trình di chuyển và trình tạo hạt giống cho bảng places của ta . Trong bước tiếp theo, ta sẽ xem cách thực thi chúng.

Bước 6 - Chạy Database Migrations và Seeders

Trước khi tiếp tục, ta cần đảm bảo ứng dụng của bạn đã được cài đặt và đang chạy. Ta sẽ cài đặt khóa mã hóa ứng dụng và sau đó truy cập ứng dụng từ trình duyệt để kiểm tra web server .

Để tạo khóa mã hóa theo yêu cầu của Laravel, bạn có thể sử dụng artisan key:generate lệnh create:

  • docker-compose exec app php artisan key:generate

Sau khi khóa đã được tạo, bạn có thể truy cập ứng dụng bằng cách trỏ trình duyệt của bạn tới tên server hoặc địa chỉ IP của server trên cổng 8000 :

http://server_host_or_ip:8000 

Bạn sẽ thấy một trang như thế này:

Lỗi MySQL

Điều đó nghĩa là ứng dụng có thể kết nối với database , nhưng nó không thể tìm thấy một bảng được gọi là places . Bây giờ ta sẽ tạo bảng places , sử dụng lệnh migrate nghệ nhân sau:

  • docker-compose exec app php artisan migrate

Bạn sẽ nhận được kết quả tương tự như sau:

Output
Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated:  2014_10_12_000000_create_users_table (0.06 seconds) Migrating: 2014_10_12_100000_create_password_resets_table Migrated:  2014_10_12_100000_create_password_resets_table (0.06 seconds) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated:  2019_08_19_000000_create_failed_jobs_table (0.03 seconds) Migrating: 2020_02_10_144134_create_places_table Migrated:  2020_02_10_144134_create_places_table (0.03 seconds) 

Bạn sẽ nhận thấy rằng một số di chuyển khác đã được thực hiện cùng với di chuyển create_places_table mà ta đã cài đặt . Những di chuyển này được tạo tự động khi Laravel được cài đặt. Mặc dù bây giờ ta sẽ không sử dụng các bảng bổ sung này, chúng cần thiết trong tương lai khi ta mở rộng ứng dụng để có user đã đăng ký và công việc đã lên lịch. Hiện tại, bạn có thể để nguyên như vậy.

Đến đây, bàn của ta vẫn còn trống. Ta cần chạy lệnh db:seed để tạo database với các vị trí mẫu của ta :

  • docker-compose exec app php artisan db:seed

Thao tác này sẽ chạy trình seeding của ta và chèn các giá trị mẫu mà ta đã xác định trong lớp PlacesTableSeeder của ta . Bạn sẽ thấy kết quả tương tự như sau:

Output
Seeding: PlacesTableSeeder Seeded:  PlacesTableSeeder (0.06 seconds) Database seeding completed successfully. 

Bây giờ, reload trang ứng dụng trên trình duyệt của bạn. Bạn sẽ thấy một trang tương tự như sau:

Demo ứng dụng Laravel

Khi nào bạn cần bắt đầu lại từ đầu, bạn có thể xóa tất cả các bảng database của bạn bằng:

  • docker-compose exec app php artisan db:wipe
Output
Dropped all tables successfully. 

Để chạy quá trình di chuyển ứng dụng và bắt đầu các bảng trong một lệnh, bạn có thể sử dụng:

  • docker-compose exec app php artisan migrate --seed
Output
Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated:  2014_10_12_000000_create_users_table (0.06 seconds) Migrating: 2014_10_12_100000_create_password_resets_table Migrated:  2014_10_12_100000_create_password_resets_table (0.07 seconds) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated:  2019_08_19_000000_create_failed_jobs_table (0.03 seconds) Migrating: 2020_02_10_144134_create_places_table Migrated:  2020_02_10_144134_create_places_table (0.03 seconds) Seeding: PlacesTableSeeder Seeded:  PlacesTableSeeder (0.06 seconds) Database seeding completed successfully. 

Nếu bạn muốn khôi phục quá trình di chuyển, bạn có thể chạy:

  • docker-compose exec app php artisan migrate:rollback

Điều này sẽ kích hoạt phương thức down cho mỗi lớp di chuyển bên trong folder migrations . Thông thường, nó sẽ xóa tất cả các bảng đã được tạo thông qua các lớp di chuyển, để lại bất kỳ bảng nào khác có thể đã được tạo theo cách thủ công. Bạn sẽ thấy kết quả như thế này:

Output
Rolling back: 2020_02_10_144134_create_places_table Rolled back:  2020_02_10_144134_create_places_table (0.02 seconds) Rolling back: 2019_08_19_000000_create_failed_jobs_table Rolled back:  2019_08_19_000000_create_failed_jobs_table (0.02 seconds) Rolling back: 2014_10_12_100000_create_password_resets_table Rolled back:  2014_10_12_100000_create_password_resets_table (0.02 seconds) Rolling back: 2014_10_12_000000_create_users_table Rolled back:  2014_10_12_000000_create_users_table (0.02 seconds) 

Lệnh rollback đặc biệt hữu ích khi bạn đang áp dụng các thay đổi đối với mô hình ứng dụng và không thể sử dụng lệnh db:wipe - ví dụ: nếu nhiều hệ thống phụ thuộc vào cùng một database .

Kết luận

Trong hướng dẫn này, ta đã biết cách sử dụng di chuyển database và trình seeding để tạo điều kiện cài đặt database phát triển và thử nghiệm cho ứng dụng Laravel 6.

Bước tiếp theo, bạn có thể cần kiểm tra tài liệu Laravel để biết thêm chi tiết về cách sử dụng trình tạo truy vấn và cách sử dụng các mô hình Eloquent để tóm tắt thêm schemas database của ứng dụng.


Tags:

Các tin liên quan

Cách tạo một ứng dụng lập hóa đơn đơn giản với node: database và API
2019-12-12
Cách cài đặt WordPress với dịch vụ database trên Ubuntu 18.04
2019-08-20
Dịch vụ Database online
2019-02-14
Tìm hiểu database phân đoạn - Database Sharding
2019-02-07
Cách thiết lập database từ xa để tối ưu hóa hiệu suất trang web với MySQL trên Ubuntu 18.04
2018-11-28
Cách quản lý database SQL
2018-09-26
Cách cải thiện tìm kiếm database với tìm kiếm toàn văn bản (Full Text Search) trong MySQL 5.6 trên Ubuntu 16.04
2017-10-30
Cách thiết lập database đồ thị Titan với Cassandra và ElasticSearch trên Ubuntu 16.04
2017-06-27
Cách thiết lập database từ xa để tối ưu hóa hiệu suất trang web với MySQL trên Ubuntu 16.04
2017-06-05
Cách gỡ lỗi WordPress "Lỗi thiết lập kết nối database"
2017-04-21