Kết nối dự án laravel của bạn với cơ sở dữ liệu MySQL khá dễ dàng. Vì chúng tôi đã thực hiện cài đặt với XAMPP. Nó đi kèm với MySQL và PHPMyAdmin đã được cài đặt sẵn. Trong hướng dẫn này, tôi sẽ sử dụng phpMyAdmin để tạo một cơ sở dữ liệu mới sẽ kết nối với ứng dụng laravel. Bài đăng này giả định rằng bạn đã thiết lập dự án laravel tại địa phương của mình và bạn có thể truy cập trang chủ của nó thông qua localhost hoặc tên miền được đặt tùy chỉnh
Bước 1. Tạo cơ sở dữ liệu mới qua phpmyadmin
Điều hướng đến tên miền. dev/PHPMyAdmin, Nhấp vào tab Cơ sở dữ liệu và tạo cơ sở dữ liệu mới với tên bạn muốn
Nhấp vào tạo sẽ tạo cơ sở dữ liệu mới trong XAMPP MySQL của bạn
Bước 2. Những thay đổi trong. tập tin cấu hình env
Khi cơ sở dữ liệu được tạo, bạn cần thông báo cho dự án laravel của mình chi tiết về cơ sở dữ liệu
Laravel 5 có một cách khá đơn giản để làm điều đó, Tất cả cấu hình mà bạn nên giữ riêng tư và không nên chia sẻ sẽ được đưa vào. tệp env của dự án laravel của bạn
Trong hướng dẫn này, bạn sẽ học cách xây dựng một ứng dụng theo dõi tâm trạng với Laravel 9, kết nối nó với cơ sở dữ liệu MySQL của PlanetScale, thực hiện các thay đổi lược đồ cơ sở dữ liệu và triển khai nhánh cơ sở dữ liệu của bạn để sản xuất. Bạn sẽ sử dụng PlanetScale cho cơ sở dữ liệu, cơ sở dữ liệu này cung cấp cho bạn cơ sở dữ liệu tương thích với MySQL được quản lý hoàn toàn, khả năng mở rộng không giới hạn, quy trình phát triển giống như Git, không thay đổi giản đồ thời gian ngừng hoạt động, v.v.
Dưới đây là một số điểm nổi bật về những gì bạn sẽ tạo
- Cơ sở dữ liệu MySQL sẵn sàng sản xuất trong PlanetScale
- 2 nhánh cơ sở dữ liệu. php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 cho sản xuất và php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3 cho phát triển
- 2 bảng, php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 và php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5, để lưu trữ các mục nhập hàng ngày và tùy chọn tâm trạng của bạn
- Di chuyển cơ sở dữ liệu và trình gieo hạt để chạy trên cơ sở dữ liệu phát triển của bạn
- Triển khai các thay đổi lược đồ không chặn từ phát triển sang sản xuất với PlanetScale
Nếu bạn chỉ muốn bắt đầu và chạy với Laravel và PlanetScale, thay vào đó hãy xem hướng dẫn nhanh về Laravel của chúng tôi. Bạn cũng có thể tìm thấy mã cuối cùng cho ứng dụng này trên GitHub nếu bạn muốn tìm hiểu xung quanh
Bắt đầu nào
Để chạy hướng dẫn này, bạn sẽ cần như sau
- Kiến thức về Laravel cho người mới bắt đầu — Hướng dẫn này sử dụng Laravel php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController6
- PHP — Hướng dẫn này sử dụng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController7
- nhà soạn nhạc
- npm
- Tài khoản PlanetScale miễn phí
Có một số cách để cài đặt ứng dụng Laravel 9 mới
Hướng dẫn này sẽ sử dụng phương pháp cài đặt Composer, nhưng vui lòng chọn bất kỳ phương pháp nào bạn thích
Để cài đặt với Trình soạn thảo, hãy đảm bảo rằng bạn đã cài đặt PHP và Trình soạn thảo trên máy của mình
Phần cuối
composer create-project laravel/laravel laravel-mood-trackerSau khi cài đặt, hãy nhập vào thư mục của bạn, mở nó trong trình chỉnh sửa mã của bạn và khởi động ứng dụng
Phần cuối
cd laravel-mood-tracker php artisan serveBạn có thể xem ứng dụng của mình tại http. //máy chủ cục bộ. 8000/
Trước khi bạn đi sâu vào mã, hãy thiết lập cơ sở dữ liệu của bạn. Truy cập PlanetScale để đăng ký tài khoản nếu bạn chưa có
Tạo cơ sở dữ liệu
Tiếp theo, bạn sẽ được nhắc tạo cơ sở dữ liệu mới. Đặt tên cho nó, chọn khu vực gần bạn nhất hoặc ứng dụng của bạn và nhấp vào "Tạo cơ sở dữ liệu"
Khi bạn ở đây, hãy chuyển đến tab "Cài đặt" trên cơ sở dữ liệu của bạn và nhấp vào hộp kiểm bên cạnh "Tự động sao chép dữ liệu di chuyển", chọn "Laravel" từ danh sách thả xuống và nhấp vào "Lưu thay đổi cơ sở dữ liệu". Điều này không bắt buộc, nhưng nó cho phép PlanetScale theo dõi các lần di chuyển Laravel của bạn để các nhánh cơ sở dữ liệu mới được tạo tự động với các lần di chuyển mới nhất
Làm việc với các chi nhánh
Một trong những tính năng mạnh mẽ của PlanetScale là khả năng tạo các nhánh, tương tự như mô hình Git
Cơ sở dữ liệu của bạn đi kèm với một nhánh mặc định, php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2. Nhánh này được chỉ định là nhánh phát triển để bắt đầu, với mục tiêu chuyển nó sang sản xuất sau khi bạn thực hiện bất kỳ thay đổi lược đồ cần thiết nào
Để chứng minh điều này hoạt động như thế nào, hãy quảng cáo nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 để sản xuất ngay bây giờ, sau đó tạo một nhánh mới, php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3, để phát triển. Nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 hiện đang trống, nhưng khi bạn đã hoàn tất tất cả các thay đổi của mình trên nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3, bạn có thể cuộn chúng lên tới php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2
Để tạo một chi nhánh mới
- Chọn cơ sở dữ liệu của bạn từ trang chính
- Nhấp vào "Chi nhánh mới"
- Đặt tên cho nó là php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3 hoặc bất cứ thứ gì bạn muốn
- Nhấp vào "Tạo chi nhánh"
Tiếp theo, đưa nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 vào sản xuất. Một nhánh sản xuất bảo vệ bạn khỏi việc thực hiện các thay đổi lược đồ trực tiếp (có nghĩa là ít có khả năng mắc lỗi hơn. ), có tính khả dụng cao và bao gồm các bản sao lưu hàng ngày tự động
Thúc đẩy php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 sản xuất
- Quay lại trang tổng quan về cơ sở dữ liệu và nhấp vào tab Chi nhánh
- Nhấp vào nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2
- Nhấp vào nút "Thúc đẩy chi nhánh sản xuất"
- Đảm bảo rằng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 được chọn và nhấp vào "Quảng bá chi nhánh"
Đó là nó. Bây giờ bạn có một cơ sở dữ liệu trực tiếp với hai nhánh được lưu trữ trên PlanetScale
Cơ sở dữ liệu của bạn hiện đang trống, vì vậy hãy kết nối nó với ứng dụng Laravel của bạn để bạn có thể bắt đầu ghi dữ liệu vào đó
Bạn có thể kết nối cơ sở dữ liệu phát triển của mình với ứng dụng Laravel theo một trong hai cách sau. hoặc với một. Hướng dẫn này sẽ chỉ cho bạn cách kết nối bằng tên người dùng và mật khẩu, nhưng bạn có thể sử dụng một trong hai tùy chọn
Kết nối với tên người dùng và mật khẩu
- Quay lại bảng điều khiển PlanetScale của bạn, nhấp vào tab "Chi nhánh" trong cơ sở dữ liệu của bạn và chọn php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3
- Nhấp vào nút "Kết nối"
- Nhấp vào "Mật khẩu mới"
- Chọn "Laravel" từ danh sách thả xuống hiện được đặt thành "Chung"
- Sao chép toàn bộ thông tin đăng nhập. Hãy chắc chắn rằng bạn sao chép nó, vì bạn sẽ không thể nhìn thấy lại mật khẩu khi rời khỏi trang. Bạn luôn có thể tạo một cái mới nếu bạn quên lưu trữ nó
Định cấu hình ứng dụng Laravel 9 của bạn
Tiếp theo, hãy kết nối ứng dụng Laravel của bạn. Mở tệp <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }0 của bạn trong trình chỉnh sửa mã của bạn, tìm phần kết nối cơ sở dữ liệu và dán thông tin đăng nhập mà bạn đã sao chép từ bảng điều khiển PlanetScale
Nó sẽ trông giống như thế này
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pemGhi chú. Giá trị của <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }1 sẽ phụ thuộc vào hệ thống của bạn. Bạn có thể tìm thêm thông tin trên trang Kết nối an toàn của chúng tôi
Cuối cùng, hãy chạy ứng dụng Laravel của bạn với
Phần cuối
php artisan serveNhánh phát triển PlanetScale của bạn hiện được kết nối với ứng dụng Laravel của bạn. Hãy thêm một lược đồ và một số dữ liệu để xem nó hoạt động
Đối với ứng dụng theo dõi tâm trạng này, bạn sẽ cần hai mô hình. <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2 và <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }3
Ngoài ra, mỗi mô hình sẽ có một bộ điều khiển, di chuyển và/hoặc trình gieo hạt và tệp xuất xưởng tương ứng. Dưới đây là tổng quan về mục đích sử dụng của từng tệp và cách chúng tương tác
- Mô hình — Để sử dụng ORM của Laravel, Eloquent, mỗi bảng có một Mô hình cho phép Eloquent biết cách tương tác với bảng đó. Nó chứa thông tin về các mối quan hệ của bảng, những thuộc tính nào có thể được sửa đổi, v.v.
- Bộ điều khiển — Mỗi kiểu máy cũng có một bộ điều khiển tương ứng. Các bộ điều khiển này giữ logic để xử lý các yêu cầu trong ứng dụng của bạn. Ví dụ: để xem tất cả các mục trong trình theo dõi tâm trạng của bạn, ứng dụng của bạn sẽ sử dụng lớp trình điều khiển đã chỉ định để tìm ra cách lấy dữ liệu
- Di chuyển — Quá trình di chuyển của bạn không chỉ xác định lược đồ cơ sở dữ liệu mà ứng dụng của bạn sử dụng mà còn đóng vai trò kiểm soát phiên bản. Nếu ai đó mới tham gia nhóm của bạn, tất cả những gì họ phải làm để có được phiên bản hiện tại của lược đồ của bạn (cũng như tất cả lịch sử) là chạy các lần di chuyển hiện có. Bất cứ khi nào bạn cần sửa đổi lược đồ, bạn sẽ tạo một quá trình di chuyển để làm như vậy
- Seeders — Các tệp seeder của bạn cho phép bạn chạy cơ sở dữ liệu phát triển của mình với một số dữ liệu ban đầu, điều này có lợi cho việc thử nghiệm ứng dụng của bạn. Bạn có thể tạo seeder của mình với dữ liệu cụ thể, dữ liệu được tạo tự động hoặc kết hợp. Dù bằng cách nào, thật hữu ích khi biết rằng toàn bộ nhóm làm việc trên ứng dụng có thể dễ dàng sử dụng cùng một dữ liệu mẫu
- Nhà máy - Các tệp nhà máy hoạt động với các mô hình và tệp trình tạo của bạn để xác định dữ liệu hạt giống. Bạn không thể chỉ sử dụng bất kỳ dữ liệu nào khi tạo cơ sở dữ liệu của mình. Nó phải phù hợp với các yêu cầu lược đồ cơ sở dữ liệu như loại, độ dài, tính duy nhất, v.v. Với nhà máy, bạn có thể sử dụng các định nghĩa này từ lớp Mô hình của mình để kiểm soát dữ liệu nào được tạo và số lượng
Bạn thực sự có thể tạo khung cho tất cả các tệp này bằng một lệnh duy nhất. Chạy phần sau để tạo các tệp này
Phần cuối
php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeControllerBảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 sẽ khá tĩnh, vì vậy bạn không cần tệp gốc cho điều đó, chỉ cần cho php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5. Tương tự như vậy, bạn sẽ không cần tệp seeder cho bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5, vì bạn sẽ gọi cho nhà máy trực tiếp từ tệp seeder chính. Bạn cũng đang tạo một tệp <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }7 độc lập để tạo trang chủ. Bạn sẽ thấy tổng cộng 9 tệp mới có cấu trúc như sau
├ app ├── Http │ ├── Controllers │ └── MoodController.php │ └── EntryController.php │ └── HomeController.php ├── Models │ ├── Mood.php │ └── Entry.php ├── database │ ├── factories │ └── EntryFactory.php │ └── migrations │ └── xxxx_xx_xx_xxxxxx_create_moods_table.php │ └── xxxx_xx_xx_xxxxxx_create_entries_table.php │ └── seeders │ └── MoodSeeder.php └Hãy thiết lập các tệp này ngay bây giờ để bạn có thể hiểu rõ hơn về dữ liệu sẽ trông như thế nào
Đầu tiên, xóa tất cả các tệp di chuyển hiện có trong <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }8 ngoại trừ hai tệp cho php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 và php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5. Ngoài ra còn có một người lén lút đi chơi trong <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }1 mà bạn cũng có thể xóa
Mở tệp di chuyển cho bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 bên dưới <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }3 và thay thế bằng bảng sau
PHP
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }Sau khi chạy, thao tác này sẽ tạo bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 với các cột <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }5, <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }6 và <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }7, như được mô tả bên dưới
- <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }5 (BIGINT KHÔNG ĐƯỢC KÝ) — Tự động tăng để xác định tâm trạng
- <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }6 (VARCHAR) — Tên tâm trạng
- <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }7 (VARCHAR) — Màu dùng để thể hiện tâm trạng
Tiếp theo, mở tệp di chuyển cho php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5 tại php artisan migrate2 và thay thế bằng
PHP
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }Đây là các cột cho bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5
- <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }5 (LỚN LỚN CHƯA KÝ) — Tự động tăng để xác định mục nhập
- php artisan migrate5 (NGÀY) — Ngày nhập cảnh
- php artisan migrate6 (TEXT) — Bất kỳ ghi chú nào đi kèm với mục nhập
- php artisan migrate7 (BIGINT CHƯA KÝ) — Tâm trạng tương ứng cho mục nhập này
Quan trọng. Mặc dù thông thường, bạn có thể thêm phương thức php artisan migrate8 vào khóa ngoại (php artisan migrate7) để thực thi tính toàn vẹn tham chiếu, nhưng chúng tôi đã cố tình bỏ qua phương thức này ở đây. PlanetScale không hỗ trợ các ràng buộc khóa ngoại được thực thi ở cấp cơ sở dữ liệu vì chúng tôi tin rằng chúng không đáng để đánh đổi về hiệu suất và khả năng mở rộng
Chạy di chuyển
Bây giờ là lúc để chạy di chuyển. Trong thiết bị đầu cuối của bạn trong thư mục dự án Laravel, hãy chạy như sau
Phần cuối
php artisan migrateVì bạn đã kết nối với cơ sở dữ liệu PlanetScale của mình, những lần di chuyển này hiện đang hoạt động trên nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3 của bạn (hoặc bất kỳ thứ gì bạn đã định cấu hình trong tệp <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }0 của mình)
Để xác nhận điều này, hãy truy cập bảng điều khiển PlanetScale của bạn, nhấp vào cơ sở dữ liệu của bạn, nhấp vào "Nhánh", chọn nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3, nhấp vào "Lược đồ" và nhấp vào "Làm mới lược đồ". Bạn sẽ thấy ba bảng. php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5, SHOW tables; DESCRIBE entries; DESCRIBE moods;4 và php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4
Bạn cũng có thể xem các bảng của mình trong bảng điều khiển MySQL của PlanetScale bằng cách nhấp vào "Bảng điều khiển" và chạy
SQL
SHOW tables; DESCRIBE entries; DESCRIBE moods;Hãy thêm một số dữ liệu vào cơ sở dữ liệu của bạn. Mở SHOW tables; DESCRIBE entries; DESCRIBE moods;6 và thay thế nó bằng phần sau
PHP
cd laravel-mood-tracker php artisan serve0Như đã đề cập trước đó, bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 hiện tại sẽ khá tĩnh, vì vậy bạn chỉ cần tạo dữ liệu một cách rõ ràng trong seeder vì không có nhiều dữ liệu
Đối với dữ liệu hạt giống php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5, bạn sẽ muốn tạo một số bản ghi với một số giá trị ngẫu nhiên thay vì dữ liệu được mã hóa cứng như trong php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4. Đây là nơi các nhà máy phát huy tác dụng. Mở cd laravel-mood-tracker php artisan serve00 và thay thế nó bằng
PHP
cd laravel-mood-tracker php artisan serve1Văn bản cho mỗi mục đang được tạo bằng cách sử dụng Faker PHP. Một <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }5 ngẫu nhiên từ mô hình <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2 được chỉ định cho php artisan migrate7. Mục nhập ngày phức tạp hơn một chút vì nó cần phải là duy nhất và ở một định dạng cụ thể. Bạn không thể sử dụng thư viện Faker cho việc này vì nó chỉ có thể tạo ra một giá trị duy nhất là cd laravel-mood-tracker php artisan serve04, không phải là cd laravel-mood-tracker php artisan serve05. Bạn sẽ tạo các giá trị ngày ngẫu nhiên trong bước tiếp theo
Cuối cùng, sửa đổi tệp cd laravel-mood-tracker php artisan serve06 chính của bạn như sau
PHP
cd laravel-mood-tracker php artisan serve2Điều này đầu tiên chạy tệp cd laravel-mood-tracker php artisan serve07 mà bạn đã điền trước đó. Tiếp theo, bạn đang tạo một mảng gồm 15 ngày ngẫu nhiên, duy nhất bằng cách sử dụng thư viện cd laravel-mood-tracker php artisan serve08. Cuối cùng, bạn lặp qua mảng đó, gọi tệp cd laravel-mood-tracker php artisan serve00 mà bạn đã tạo ở bước trước và thêm ngày ngẫu nhiên vào mỗi bản ghi php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5. cd laravel-mood-tracker php artisan serve11 sử dụng phương pháp cd laravel-mood-tracker php artisan serve12 để tạo bản ghi cơ sở dữ liệu mới dựa trên mô hình <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }3
Bước cuối cùng trước khi gieo hạt là thiết lập các mô hình. Đầu tiên, hãy mở cd laravel-mood-tracker php artisan serve14 và thay thế nó bằng
PHP
cd laravel-mood-tracker php artisan serve3Ở đây, trước tiên bạn chỉ định những thuộc tính nào có thể được sửa đổi trong cd laravel-mood-tracker php artisan serve15. Quên thiết lập điều này là một lỗi phổ biến có thể khó gỡ lỗi khi mới bắt đầu, vì vậy, bất cứ khi nào bạn thêm một cột mà bạn có thể viết vào, hãy đảm bảo cập nhật cột đó tại đây
Bạn cũng đang đặt cd laravel-mood-tracker php artisan serve16 thành cd laravel-mood-tracker php artisan serve17 để Laravel không tự động tạo các cột cd laravel-mood-tracker php artisan serve18 và cd laravel-mood-tracker php artisan serve19 trong bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4
Các mô hình cũng cho phép bạn xác định các mối quan hệ Eloquent. Trong mô hình <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2, bạn đang xác định mối quan hệ một-nhiều giữa các mục nhập và tâm trạng. Mỗi tâm trạng có thể có nhiều mục, nhưng mỗi mục sẽ chỉ có một tâm trạng tương ứng với nó. Điều này được phản ánh trong hàm cd laravel-mood-tracker php artisan serve22 sử dụng phương thức cd laravel-mood-tracker php artisan serve23. Mỗi <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2 có nhiều mục
Phương pháp cd laravel-mood-tracker php artisan serve25 được sử dụng để xóa bộ nhớ cache khi lưu tâm trạng mới. Bạn sẽ thấy điều này phát huy tác dụng khi bạn cập nhật bộ điều khiển của mình
Tiếp theo, mở cd laravel-mood-tracker php artisan serve26 và thay thế nó bằng nội dung sau
PHP
cd laravel-mood-tracker php artisan serve4Điều này tương tự như mô hình <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2. Bạn cũng đang tạo mối quan hệ nghịch đảo bằng cách sử dụng cd laravel-mood-tracker php artisan serve28. Mỗi <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }3 thuộc về chính xác một <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2
Xác định các mối quan hệ này ngay bây giờ sẽ cho phép bạn sử dụng Eloquent, ORM của Laravel, để dễ dàng làm việc với dữ liệu của bạn
Cuối cùng, đã đến lúc khởi tạo cơ sở dữ liệu của bạn. Trong thiết bị đầu cuối trong thư mục dự án của bạn, hãy chạy như sau
Phần cuối
cd laravel-mood-tracker php artisan serve5Điều này sẽ chạy tệp cd laravel-mood-tracker php artisan serve06 chính
Để xem dữ liệu đã tạo của bạn và xác nhận rằng nó hoạt động, hãy quay lại bảng điều khiển PlanetScale của bạn, chọn cơ sở dữ liệu, nhấp vào "Nhánh", chọn nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3 và nhấp vào "Bảng điều khiển". Chạy các truy vấn sau
SQL
cd laravel-mood-tracker php artisan serve6Bạn sẽ thấy dữ liệu cho bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 mà bạn đã tạo
SQL
cd laravel-mood-tracker php artisan serve7Đối với bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5, bạn có. 15 bản ghi có ngày ngẫu nhiên, duy nhất trong 2 tháng qua, văn bản ngẫu nhiên bên dưới php artisan migrate6 và một php artisan migrate7 được chọn ngẫu nhiên phù hợp với một trong những tâm trạng trong bảng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4
Bây giờ, nhánh phát triển của bạn đã được tải lên với một số dữ liệu giả, hãy thiết lập bộ điều khiển tài nguyên để bạn có thể tạo và sửa đổi dữ liệu
Trong khi cơ sở dữ liệu được thiết lập và sẵn sàng hoạt động, ứng dụng vẫn chưa thực sự làm bất cứ điều gì. Hãy khắc phục điều đó
Bộ điều khiển đầu vào
Đầu tiên, mở cd laravel-mood-tracker php artisan serve38 và thay thế nó bằng
PHP
cd laravel-mood-tracker php artisan serve8Sau đó, cd laravel-mood-tracker php artisan serve39 có các phương thức sau
- cd laravel-mood-tracker php artisan serve40 — Hiển thị tất cả các mục nhập
- cd laravel-mood-tracker php artisan serve12 — Hiển thị biểu mẫu để tạo mục nhập mới
- cd laravel-mood-tracker php artisan serve42 — Xác thực đầu vào mục nhập mới và lưu nó vào cơ sở dữ liệu
- cd laravel-mood-tracker php artisan serve43 — Hiển thị một mục duy nhất
- cd laravel-mood-tracker php artisan serve44 — Hiển thị biểu mẫu để cập nhật mục nhập
- cd laravel-mood-tracker php artisan serve45 — Xác thực mục nhập đã cập nhật và cập nhật trong cơ sở dữ liệu
- cd laravel-mood-tracker php artisan serve46 — Xóa mục nhập
Hãy xem qua một số chi tiết đáng chú ý của bộ điều khiển này mà bạn cũng sẽ thấy trong cd laravel-mood-tracker php artisan serve47
Bộ nhớ đệm
Phương thức cd laravel-mood-tracker php artisan serve40 lấy TẤT CẢ các mục nhập từ cơ sở dữ liệu. Mặc dù đây không phải là một con số lớn đối với ứng dụng mẫu này, nhưng nó có khả năng biến thành một hiệu suất khổng lồ và chi phí tăng lên khi dữ liệu tăng lên
Có một số cách để cải thiện hiệu suất, nhưng một giải pháp nhanh chóng là lưu trữ dữ liệu vào bộ đệm
PHP
cd laravel-mood-tracker php artisan serve9Laravel làm cho bộ nhớ đệm dễ dàng sử dụng phương pháp. Thao tác này sẽ kiểm tra bộ đệm để xem dữ liệu đã tồn tại ở đó chưa và nếu chưa, nó sẽ lấy từ cơ sở dữ liệu và lưu trữ trong bộ đệm trong 3600 giây dưới dạng php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5
Để tìm hiểu sâu hơn về Laravel caching, hãy xem Giới thiệu về Laravel caching
Lượt xem
Với mọi phương thức, bạn sẽ thấy câu lệnh trả về ở cuối trả về chế độ xem hoặc chuyển hướng cùng với một số dữ liệu
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 0Trong ví dụ trên, sau khi phương thức thực thi, người dùng sẽ được chuyển đến trang mục nhập cd laravel-mood-tracker php artisan serve51 được tìm thấy tại cd laravel-mood-tracker php artisan serve52 (bạn sẽ sớm tạo trang này). Dữ liệu cho cd laravel-mood-tracker php artisan serve53 cũng sẽ được chuyển đến chế độ xem
Xác thực biểu mẫu
Cả hai phương pháp cd laravel-mood-tracker php artisan serve42 và cd laravel-mood-tracker php artisan serve45 đều yêu cầu một số loại xác thực biểu mẫu trước khi lưu trữ các mục nhập vào cơ sở dữ liệu. Bạn không bao giờ nên tin tưởng đầu vào của người dùng, vì vậy xác thực biểu mẫu phụ trợ là điều cần thiết để xác thực rằng đầu vào của người dùng là chính xác
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 1Laravel làm cho việc xác thực biểu mẫu phức tạp nhất trở nên dễ dàng. Đoạn mã trên là từ phương pháp cd laravel-mood-tracker php artisan serve45
Hãy kiểm tra xác nhận của php artisan migrate5. Hai cái đầu tiên, cd laravel-mood-tracker php artisan serve58 và , khá đơn giản
Cái tiếp theo, cd laravel-mood-tracker php artisan serve60, phức tạp hơn một chút. Bạn không muốn ngày lặp lại trong ứng dụng này, vì vậy bạn phải kiểm tra xem ngày đó có phải là duy nhất không khi xác thực. Tuy nhiên, nếu bạn đang cập nhật một mục hiện có, ứng dụng của bạn sẽ so sánh đầu vào được cập nhật của người dùng với mục hiện có. Nếu người dùng chỉ cập nhật văn bản, thì ngày sẽ giống nhau, vì vậy nó sẽ không xác thực. Để giải quyết vấn đề này, bạn có thể chuyển vào <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateEntriesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('entries', function (Blueprint $table) { $table->id(); $table->date('date'); $table->text('notes'); $table->foreignId('mood_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('entries'); } }5 hiện tại và nó sẽ kiểm tra xem tất cả các ngày là duy nhất ngoại trừ ngày trên mục nhập được chỉ định
Bộ điều khiển nhà
Tiếp theo, thiết lập <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }7, sẽ được sử dụng để lấy dữ liệu cho trang chủ. Mở cd laravel-mood-tracker php artisan serve63 và dán vào phần sau
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 2Bộ điều khiển tâm trạng
Cuối cùng, mở cd laravel-mood-tracker php artisan serve64 và dán vào phần sau
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 3Điều này rất giống với cd laravel-mood-tracker php artisan serve39, vì vậy để cho ngắn gọn, tôi sẽ không mở rộng bất kỳ chi tiết nào
Bây giờ bạn đã tạo bộ điều khiển, hãy thiết lập các tuyến đường. Mở cd laravel-mood-tracker php artisan serve66 và thay thế nó bằng
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 4Khi bạn tạo bộ điều khiển <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }3 và <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }2 trước đó, bạn đã chỉ định chúng làm bộ điều khiển tài nguyên bằng cách sử dụng cờ cd laravel-mood-tracker php artisan serve69. Điều này có nghĩa là các bộ điều khiển được xây dựng sẵn để xử lý tất cả các thao tác CRUD (tạo, đọc, cập nhật, hủy)
Sau đó, bạn có thể sử dụng phương pháp cd laravel-mood-tracker php artisan serve70 để tạo tất cả các tuyến đường cần thiết để tạo, đọc, cập nhật và xóa chỉ trong một dòng
Một cách tiện lợi để xem tất cả các tuyến đường này sẽ tạo là chạy
PHP
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 5Bạn sẽ thấy một cái gì đó như thế này
Phần cuối
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 6Tại thời điểm này, bạn có một cơ sở dữ liệu đang hoạt động với dữ liệu giả và chức năng CRUD hoàn chỉnh. Tất cả những gì bạn cần làm bây giờ là tạo chế độ xem ứng dụng để người dùng của bạn có thể tương tác với ứng dụng
Bố cục của ứng dụng này sử dụng Tailwind để tạo kiểu, cũng như một số thành phần TailwindUI dựng sẵn, vì vậy, bạn sẽ cần thêm Tailwind làm thành phần phụ thuộc
Đây là cách bạn kéo Tailwind vào ứng dụng của mình
- Chạy phần sau trong thư mục gốc của dự án Laravel của bạn để cài đặt nó
Phần cuối
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 7- Mở cd laravel-mood-tracker php artisan serve71 và thêm cd laravel-mood-tracker php artisan serve72 làm plugin PostCSS
Javascript
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 8- Mở cd laravel-mood-tracker php artisan serve73 và cập nhật cd laravel-mood-tracker php artisan serve74 như sau
Javascript
DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 9- Mở cd laravel-mood-tracker php artisan serve75 và dán vào
CSS
php artisan serve0- Trong tab thiết bị đầu cuối mới, hãy bắt đầu quá trình xây dựng với
Phần cuối
php artisan serve1Tôi sẽ lướt qua phần này vì có khá nhiều tệp và rất nhiều thao tác sao chép và dán. Bạn sẽ bắt đầu thấy ứng dụng của mình trở nên sống động với mọi chế độ xem mới được thêm vào, vì vậy, hãy chạy ứng dụng của bạn ngay bây giờ và xem điều kỳ diệu xảy ra
Phần cuối
php artisan serveĐầu tiên, tạo các thư mục và tệp sau trong thư mục cd laravel-mood-tracker php artisan serve76
- cd laravel-mood-tracker php artisan serve77
- cd laravel-mood-tracker php artisan serve78
- cd laravel-mood-tracker php artisan serve79
- cd laravel-mood-tracker php artisan serve80
- cd laravel-mood-tracker php artisan serve81
- cd laravel-mood-tracker php artisan serve82
- cd laravel-mood-tracker php artisan serve83
- cd laravel-mood-tracker php artisan serve84
- cd laravel-mood-tracker php artisan serve85
- cd laravel-mood-tracker php artisan serve86
Bạn có thể dán cái này vào thiết bị đầu cuối của mình để không phải tạo chúng theo cách thủ công
Phần cuối
php artisan serve3Tham khảo kho lưu trữ GitHub cuối cùng nếu bạn muốn xác nhận kho lưu trữ của mình được bố trí chính xác
cd laravel-mood-tracker php artisan serve78
Mở tệp cd laravel-mood-tracker php artisan serve88. Đây sẽ là bố cục chính sẽ được sử dụng lại trên các chế độ xem còn lại. Nội dung từ các chế độ xem khác sẽ được đưa vào nơi bạn thấy cd laravel-mood-tracker php artisan serve89
Dán vào sau
HTML
php artisan serve4cd laravel-mood-tracker php artisan serve77
Tiếp theo, mở cd laravel-mood-tracker php artisan serve91 và dán vào phần sau
HTML
php artisan serve5Tệp này sử dụng <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateMoodsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('moods', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('color'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('moods'); } }7 để hiển thị trang chủ. Nếu bạn nhìn vào bộ điều khiển đó, bạn sẽ thấy dữ liệu php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController4 và php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController5 đều được truy xuất từ cơ sở dữ liệu và được chuyển đến chế độ xem này. Sau đó, bạn đang lặp qua cả hai để hiển thị trên trang
cd laravel-mood-tracker php artisan serve79
Tệp này, cùng với ba tệp tiếp theo, sẽ hiển thị chế độ xem cho các trang sau
- Trang đích hiển thị tất cả các mục
- Trang để xem một mục duy nhất
- Trang để chỉnh sửa một mục nhập
- Trang để tạo một mục mới
Mở cd laravel-mood-tracker php artisan serve79 và dán vào phần sau
PHP
php artisan serve6Điều này lặp qua tất cả các mục và hiển thị chúng. Nó cũng bao gồm nút để truy cập trang chỉnh sửa riêng lẻ và nút để xóa
cd laravel-mood-tracker php artisan serve81
Mở cd laravel-mood-tracker php artisan serve81 và dán vào
PHP
php artisan serve7Vì bộ điều khiển tài nguyên sử dụng cd laravel-mood-tracker php artisan serve99, nên bạn đang sử dụng một phương thức cd laravel-mood-tracker php artisan serve99 ẩn trên biểu mẫu với DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 01
Bạn cũng đang xác thực thông tin đầu vào này trên phần phụ trợ trong DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 02, vì vậy nếu thông tin đầu vào không hợp lệ, thông báo lỗi sẽ được hiển thị ở đây với DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 03
Một điều khác cần lưu ý là chế độ xem này cần hiển thị mục nhập hiện có đang được cập nhật, vì vậy bạn đang đặt giá trị cho từng mục nhập với dữ liệu mục nhập được chuyển vào từ cơ sở dữ liệu
cd laravel-mood-tracker php artisan serve80
Tiếp theo, cập nhật chế độ xem được sử dụng để tạo mục nhập mới. Mở cd laravel-mood-tracker php artisan serve80 và dán vào phần sau
PHP
php artisan serve8Điều này tương tự như chế độ xem chỉnh sửa, nhưng không có bất kỳ dữ liệu hiện có nào được kéo vào. Bạn thậm chí có thể trở nên xảo quyệt và hợp nhất hai chế độ xem, nhưng cá nhân tôi thích tách chúng ra để dễ đọc hơn
cd laravel-mood-tracker php artisan serve82
Cuối cùng, tạo chế độ xem được sử dụng để hiển thị một mục nhập. Mở cd laravel-mood-tracker php artisan serve82 và dán vào
PHP
php artisan serve9lượt xem tâm trạng
Chế độ xem để tạo, cập nhật và hiển thị tâm trạng hầu như giống với chế độ xem cho mục nhập, vì vậy bạn sao chép chúng trực tiếp từ repo cuối cùng. Bạn có thể tìm mã cho chúng trong phần này trên kho lưu trữ GitHub
Ứng dụng của bạn hiện đã hoàn tất và sẵn sàng để sử dụng. Hãy thử nghiệm nó
Hãy chắc chắn rằng bạn vẫn có mọi thứ đang chạy
- Khởi động máy chủ PHP
Phần cuối
php artisan serve- Chạy quy trình xây dựng cho Tailwind
Phần cuối
php artisan serve1- Điều hướng đến DB_CONNECTION=mysql DB_HOST=xxxxxxxxxx.us-east-3.psdb.cloud DB_PORT=3306 DB_DATABASE=laravel-mood-tracker DB_USERNAME=xxxxxxxxxxx DB_PASSWORD=pscale_pw_xxxxxx-xx-xxxxxxxxxxxxxxxxxxxxxxxx MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem 08 để xem ứng dụng của bạn
Thêm một mục
Nhấp vào nút "Mục nhập mới" ở trên cùng bên phải và điền vào biểu mẫu. Cố gắng chọn một ngày đã được thực hiện hoặc để trống trường tâm trạng bắt buộc và bạn sẽ gặp lỗi xác thực, như mong đợi. Khi bạn gửi một mục nhập hợp lệ, bạn sẽ được đưa trở lại trang chỉ mục mục nhập nơi bạn sẽ thấy mục nhập được liệt kê
Bạn cũng có thể nhấp vào nút "Chỉnh sửa" để sửa đổi mục nhập hoặc nút "Xóa" để xóa mục nhập. Ứng dụng mẫu này không tích hợp xác nhận xóa, vì vậy đừng nhấp vào trừ khi bạn chắc chắn muốn xóa nó
PlanetScale cung cấp khả năng phân nhánh, tương tự như mô hình Git. Khi bạn, bạn đã tạo một nhánh phát triển bên ngoài nhánh sản xuất chính. Bạn đã dành toàn bộ thời gian làm việc trong nhánh cơ sở dữ liệu phát triển đó, thực hiện các thay đổi lược đồ khi cần. Nhưng nhánh cơ sở dữ liệu sản xuất đó vẫn trống
Vì vậy, bước tiếp theo là hợp nhất nhánh phát triển này vào sản xuất. Bạn thực hiện việc này bằng cách mở yêu cầu triển khai PlanetScale (tương tự như yêu cầu kéo GitHub). Bạn có thể xem sự khác biệt lược đồ của mình tại đây và PlanetScale sẽ kiểm tra để đảm bảo không có xung đột hợp nhất
Khi mọi thứ đều ổn, bạn có thể triển khai các thay đổi ngay vào sản xuất mà không cần thời gian ngừng hoạt động. Nó thực sự đơn giản
Hãy tạo một yêu cầu triển khai và hợp nhất nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3 này vào sản xuất
Trong bảng điều khiển PlanetScale của bạn, chọn cơ sở dữ liệu, nhấp vào "Nhánh" và chọn nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController3. Trên trang Tổng quan, bạn sẽ thấy biểu mẫu Yêu cầu triển khai. Đảm bảo "Triển khai tới" được đặt thành php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2. Viết nhận xét đi kèm với yêu cầu triển khai của bạn, sau đó nhấp vào "Tạo yêu cầu triển khai"
Sau khi được tạo, bạn sẽ thấy một lược đồ khác biệt trong "Thay đổi lược đồ" cho bạn biết chính xác những thay đổi mà yêu cầu triển khai này sẽ đưa ra nếu được hợp nhất. Điều này cho phép bạn và/hoặc nhóm của bạn xem xét cẩn thận các thay đổi lược đồ trước khi đưa chúng vào sản xuất
Khi các thay đổi được phê duyệt, đã đến lúc hợp nhất yêu cầu triển khai
Nhấp vào "Thêm thay đổi vào hàng đợi triển khai". Khi các thay đổi đang triển khai, bạn sẽ thấy tiến trình triển khai cho từng bảng. Một tính năng thực sự thú vị cần lưu ý ở đây là những thay đổi lược đồ này đang được cập nhật mà không có thời gian chết hoặc khóa. Tính năng phân nhánh cho phép PlanetScale cung cấp các thay đổi lược đồ không chặn, vì vậy ứng dụng sản xuất của bạn sẽ tiếp tục hoạt động trơn tru khi những thay đổi này được triển khai. PlanetScale đang xử lý tất cả trong nền
Bây giờ, bạn có thể đi đến chi nhánh php artisan make:model Mood -mcrs php artisan make:model Entry -mfcr php artisan make:controller HomeController2 của mình, nhấp vào "Lược đồ" và bạn sẽ thấy lược đồ bạn vừa tạo trong quá trình phát triển hiện đang hoạt động trong sản xuất
Nếu bạn đã đến cuối, xin chúc mừng. Bạn nên có một ứng dụng theo dõi tâm trạng làm việc hoàn chỉnh với tất cả chức năng CRUD và cơ sở dữ liệu MySQL sản xuất
Trong suốt hướng dẫn, bạn đã học cách
- Tạo bộ điều khiển, mô hình, di chuyển, nhà máy và trình gieo hạt của Laravel 9
- Tạo biểu mẫu Laravel
- Xác thực đầu vào từ các biểu mẫu của Laravel
- Làm việc với Laravel Eloquent ORM
- Kết nối ứng dụng Laravel của bạn với cơ sở dữ liệu MySQL
- Tạo yêu cầu triển khai PlanetScale
Hãy cho tôi biết nếu bạn có bất cứ thắc mắc nào. Bạn có thể tìm thấy tôi trên Twitter tại @hollylawly. Cảm ơn vì đã đọc