Laravel có hỗ trợ MySQL không?

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.

Laravel có hỗ trợ MySQL không?

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 HomeController
    2 cho sản xuất và
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    3 cho phát triển
  • 2 bảng,
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    4 và
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    5, để 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 HomeController
    6
  • 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 HomeController
    7
  • 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-tracker

Sau 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 serve

Bạ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 HomeController
2. 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 HomeController
2 để 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 HomeController
3, để phát triển. Nhánh
php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
2 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 HomeController
3, 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 HomeController
2

Để tạo một chi nhánh mới

  1. Chọn cơ sở dữ liệu của bạn từ trang chính
  2. Nhấp vào "Chi nhánh mới"
  3. Đặt tên cho nó là
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    3 hoặc bất cứ thứ gì bạn muốn
  4. Nhấp vào "Tạo chi nhánh"
Laravel có hỗ trợ MySQL không?

Tiếp theo, đưa nhánh

php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
2 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 HomeController
2 sản xuất

  1. Quay lại trang tổng quan về cơ sở dữ liệu và nhấp vào tab Chi nhánh
  2. Nhấp vào nhánh
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    2
  3. Nhấp vào nút "Thúc đẩy chi nhánh sản xuất"
  4. Đảm bảo rằng
    php artisan make:model Mood -mcrs
    php artisan make:model Entry -mfcr
    php artisan make:controller HomeController
    2 đượ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

  1. 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 HomeController
    3
  2. Nhấp vào nút "Kết nối"
  3. Nhấp vào "Mật khẩu mới"
  4. Chọn "Laravel" từ danh sách thả xuống hiện được đặt thành "Chung"
  5. 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.pem

Ghi 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 serve

Nhá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 HomeController

Bảng

php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
4 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 HomeController
5. 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 HomeController
5, 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 HomeController
4 và
php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
5. 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 HomeController
4 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 HomeController
4 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 HomeController
5 tại
php artisan migrate
2 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 HomeController
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');
        }
    }
    5 (LỚN LỚN CHƯA KÝ) — Tự động tăng để xác định mục nhập
  • php artisan migrate
    5 (NGÀY) — Ngày nhập cảnh
  • php artisan migrate
    6 (TEXT) — Bất kỳ ghi chú nào đi kèm với mục nhập
  • php artisan migrate
    7 (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 migrate
8 vào khóa ngoại (
php artisan migrate
7) để 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 migrate

Vì 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 HomeController
3 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 HomeController
3, 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 HomeController
5,
SHOW tables;
DESCRIBE entries;
DESCRIBE moods;
4 và
php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
4

Laravel có hỗ trợ MySQL không?

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 serve
0

Như đã đề cập trước đó, bảng

php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
4 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 HomeController
5, 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 HomeController
4. Đây là nơi các nhà máy phát huy tác dụng. Mở
cd laravel-mood-tracker
php artisan serve
00 và thay thế nó bằng

PHP

cd laravel-mood-tracker
php artisan serve
1

Vă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 migrate
7. 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 serve
04, không phải là
cd laravel-mood-tracker
php artisan serve
05. 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 serve
06 chính của bạn như sau

PHP

cd laravel-mood-tracker
php artisan serve
2

Điều này đầu tiên chạy tệp

cd laravel-mood-tracker
php artisan serve
07 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 serve
08. Cuối cùng, bạn lặp qua mảng đó, gọi tệp
cd laravel-mood-tracker
php artisan serve
00 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 HomeController
5.
cd laravel-mood-tracker
php artisan serve
11 sử dụng phương pháp
cd laravel-mood-tracker
php artisan serve
12 để 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 serve
14 và thay thế nó bằng

PHP

cd laravel-mood-tracker
php artisan serve
3

Ở đâ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 serve
15. 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 serve
16 thành
cd laravel-mood-tracker
php artisan serve
17 để Laravel không tự động tạo các cột
cd laravel-mood-tracker
php artisan serve
18 và
cd laravel-mood-tracker
php artisan serve
19 trong bảng
php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
4

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 serve
22 sử dụng phương thức
cd laravel-mood-tracker
php artisan serve
23. 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 serve
25 đượ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 serve
26 và thay thế nó bằng nội dung sau

PHP

cd laravel-mood-tracker
php artisan serve
4

Đ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 serve
28. 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 serve
5

Điều này sẽ chạy tệp

cd laravel-mood-tracker
php artisan serve
06 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 HomeController
3 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 serve
6

Bạ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 HomeController
4 mà bạn đã tạo

SQL

cd laravel-mood-tracker
php artisan serve
7

Đối với bảng

php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
5, 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 migrate
6 và một
php artisan migrate
7 đượ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 HomeController
4

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 serve
38 và thay thế nó bằng

PHP

cd laravel-mood-tracker
php artisan serve
8

Sau đó,

cd laravel-mood-tracker
php artisan serve
39 có các phương thức sau

  • cd laravel-mood-tracker
    php artisan serve
    40 — Hiển thị tất cả các mục nhập
  • cd laravel-mood-tracker
    php artisan serve
    12 — Hiển thị biểu mẫu để tạo mục nhập mới
  • cd laravel-mood-tracker
    php artisan serve
    42 — 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 serve
    43 — Hiển thị một mục duy nhất
  • cd laravel-mood-tracker
    php artisan serve
    44 — Hiển thị biểu mẫu để cập nhật mục nhập
  • cd laravel-mood-tracker
    php artisan serve
    45 — 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 serve
    46 — 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 serve
47

Bộ nhớ đệm

Phương thức

cd laravel-mood-tracker
php artisan serve
40 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 serve
9

Laravel 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 HomeController
5

Để 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
0

Trong 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 serve
51 được tìm thấy tại
cd laravel-mood-tracker
php artisan serve
52 (bạn sẽ sớm tạo trang này). Dữ liệu cho
cd laravel-mood-tracker
php artisan serve
53 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 serve
42 và
cd laravel-mood-tracker
php artisan serve
45 đề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
1

Laravel 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 serve
45

Hãy kiểm tra xác nhận của

php artisan migrate
5. Hai cái đầu tiên,
cd laravel-mood-tracker
php artisan serve
58 và , khá đơn giản

Cái tiếp theo,

cd laravel-mood-tracker
php artisan serve
60, 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 serve
63 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
2

Bộ điều khiển tâm trạng

Cuối cùng, mở

cd laravel-mood-tracker
php artisan serve
64 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 serve
39, 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 serve
66 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
4

Khi 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 serve
69. Đ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 serve
70 để 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
5

Bạ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
6

Tạ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

  1. 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

  1. Mở
    cd laravel-mood-tracker
    php artisan serve
    71 và thêm
    cd laravel-mood-tracker
    php artisan serve
    72 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

  1. Mở
    cd laravel-mood-tracker
    php artisan serve
    73 và cập nhật
    cd laravel-mood-tracker
    php artisan serve
    74 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

  1. Mở
    cd laravel-mood-tracker
    php artisan serve
    75 và dán vào

CSS

php artisan serve
0

  1. 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 serve
1

Tô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 serve
76

  • cd laravel-mood-tracker
    php artisan serve
    77
  • cd laravel-mood-tracker
    php artisan serve
    78
  • cd laravel-mood-tracker
    php artisan serve
    79
  • cd laravel-mood-tracker
    php artisan serve
    80
  • cd laravel-mood-tracker
    php artisan serve
    81
  • cd laravel-mood-tracker
    php artisan serve
    82
  • cd laravel-mood-tracker
    php artisan serve
    83
  • cd laravel-mood-tracker
    php artisan serve
    84
  • cd laravel-mood-tracker
    php artisan serve
    85
  • cd laravel-mood-tracker
    php artisan serve
    86

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 serve
3

Tham 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 serve
88. Đâ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 serve
89

Dán vào sau

HTML

php artisan serve
4

cd laravel-mood-tracker php artisan serve77

Tiếp theo, mở

cd laravel-mood-tracker
php artisan serve
91 và dán vào phần sau

HTML

php artisan serve
5

Tệ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 HomeController
4 và
php artisan make:model Mood -mcrs
php artisan make:model Entry -mfcr
php artisan make:controller HomeController
5 đề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 serve
79 và dán vào phần sau

PHP

php artisan serve
6

Đ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 serve
81 và dán vào

PHP

php artisan serve
7

Vì bộ điều khiển tài nguyên sử dụng

cd laravel-mood-tracker
php artisan serve
99, nên bạn đang sử dụng một phương thức
cd laravel-mood-tracker
php artisan serve
99 ẩ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 serve
80 và dán vào phần sau

PHP

php artisan serve
8

Đ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 serve
82 và dán vào

PHP

php artisan serve
9

lượ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

  1. Khởi động máy chủ PHP

Phần cuối

php artisan serve

  1. Chạy quy trình xây dựng cho Tailwind

Phần cuối

php artisan serve
1

  1. Đ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 HomeController
3 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 HomeController
3. 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 HomeController
2. 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"

Laravel có hỗ trợ MySQL không?

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 HomeController
2 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

Làm cách nào để thiết lập MySQL trong Laravel?

Đây là hướng dẫn đơn giản về thiết lập kết nối giữa cơ sở dữ liệu (MySQL) của bạn và ứng dụng Laravel. .
Bước 1. Tạo cơ sở dữ liệu. Điều này có thể được thực hiện bởi trình quản lý cơ sở dữ liệu, ví dụ: phpMyAdmin hoặc Giao diện dòng lệnh (CLI). .
Bước 2. Cập nhật. cấu hình env. .
Bước 3. Di chuyển (tùy chọn)

Cơ sở dữ liệu nào là tốt nhất cho Laravel?

Hiện tại, Laravel cung cấp hỗ trợ của bên thứ nhất cho năm cơ sở dữ liệu. .
MariaDB 10. 3+ (Chính sách phiên bản)
mysql 5. 7+ (Chính sách phiên bản)
PostgreSQL 10. 0+ (Chính sách phiên bản)
SQLite 3. 8. 8+
SQL Server 2017+ (Chính sách phiên bản)

Làm cách nào để chạy truy vấn MySQL trong Laravel?

$q = Đội hình. truy vấn() ->whereIn('f2. theme_id', function($r) sử dụng ($id) { $r->select('f. theme_id')->from('user_formation AS uf') ->join('formation', function($join) sử dụng ($id) { $join->on('uf. đội hình_id', '=', 'f. id') ->where('uf

Làm cách nào để có phiên bản MySQL trong Laravel?

Bạn có thể sử dụng truy vấn RAW. $results = DB. chọn (DB. raw('SHOW VARIABLES LIKE "%version%"') ); Bạn sẽ tìm thấy chi tiết phiên bản bổ sung về phần mềm MySQL đã cài đặt của mình như innodb_version , protocol_version , version_ssl_library và hơn thế nữa. Lưu câu trả lời này.