Laravel 101 | สวัสดีกันเถอะเรารู้จักเราไหม

og:image

Laravel เป็นเฟรมเวิร์กเว็บ PHP แบบโอเพ่นซอร์สฟรี ซึ่งสร้างโดย Taylor Otwell และมีไว้สำหรับการพัฒนาเว็บแอปพลิเคชันตามรูปแบบสถาปัตยกรรม model–view–controlle

PHP ยังคงเป็นภาษาที่ได้รับความนิยมมาถึงปัจจุบันได้รับความนิยมอย่างกว้างขวางเนื่องจากความนิยมของ WordPress แต่มีส่วนร่วมในสิทธิ์ของตนเองและพร้อมที่จะจับส่วนแบ่งการตลาดเพิ่มเติมในการพัฒนาแอปพลิเคชันสมัยใหม่

เริ่มแรกเครื่องมือที่ควรมีติดตั้งไวก่อน

เมื่อจัดการเครื่องมือทั้งหมดข้างต้นแล้ว ให้เปิดเทอร์มินัลของในไดเร็กทอรีที่ต้องการแก้ไขและเรียกใช้คำสั่งต่อไปนี้

composer create-project laravel/laravel example-app

หลังจากรันคำสั่งโปรเจคจะได้สร้างขึ้น

ตารางคำสั่ง

CommandPurpose
php artisan servestart development server
php artisan dbenter database console
php artisan make:migration migrationNamecreate a new migration
php artisan migraterun migrations
php artisan migrate:rollbackrollback last migration
php artisan migrate:resetrollback all migrations
php artisan migrate:refreshrollbacks all migrations then remigrates
php artisan make:seedermake a seed file
php artisan db:seedrun your seed files
php artisan make:model ModelNamemake a new model
php artisan make:controller ControllerNamemake a new controller
คำสั่งที่จำเป็นต้องรู้

การกำหนดค่าโครงการใหม่

มากำหนดค่าฐานข้อมูล การตั้งค่าทั้งหมดนี้จะอยู่ในตัวแปรสภาพแวดล้อมในเครื่องในภายในไฟล์ .env

DB_CONNECTION=mysql  //ประเภทฐานข้อมูล
DB_HOST=localhost // Ip server
DB_PORT=5432 //Port
DB_DATABASE=laravel //ชื่อฐานข้อมูล
DB_USERNAME=test5 //ชื่อผู้ใช้
DB_PASSWORD=test5 //รหัสผ่าน

** อย่าลืมสร้างฐ้านข้อมูลก่อน

ยืนยันโดยเชื่อมต่อกับเชลล์ฐานข้อมูล php artisan db

สร้างการโยกย้ายครั้งแรก

การย้ายข้อมูลคือวิธีที่ เพิ่ม ปรับ และลบตารางออกจากฐานข้อมูล ด้วยวิธีที่สามารถทำซ้ำได้อย่างง่ายดายในภายหลังเมื่อปรับใช้ ดังนั้น เมื่อใดก็ตามที่ต้องการอัปเดตโครงสร้างของฐานข้อมูล จำเป็นต้องสร้างการโยกย้ายใหม่ที่จะกำหนดทิศทางสำหรับการเปลี่ยนแปลง

php artisan make:migration create_todos_table

หากไปที่ /database/migrations/ จะสังเกตเห็นการย้ายข้อมูลเริ่มต้นบางอย่างที่เราสามารถใช้อ้างอิงและการย้ายข้อมูลใหม่ของเรา

เนื่องจาก create_todos_table เป็นชื่อของการโยกย้าย จึงรู้ว่าเราต้องการสร้างตารางใหม่ที่ชื่อว่า todos

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

ในฟังก์ชันนี้ สามารถกำหนดฟิลด์เพิ่มเติมใดๆ ที่ตารางควรมี อ่านส่วน Eloquent ORM ของเอกสาร Laravel เพื่อเรียนรู้เกี่ยวกับประเภทข้อมูลต่างๆ เราจะเพิ่มฟิลด์สตริงสำหรับสิ่งที่ต้องทำ

        Schema::create('todos', function (Blueprint $table) {
            $table->id();
            $table->string('item');
            $table->timestamps();
        });

ตอนนี้เราสามารถรันการโยกย้ายด้วยคำสั่ง php artisan migrate

เมล็ดข้อมูลบางอย่าง

มาสร้าง seed ด้วยคำสั่งphp artisan make:seeder TodoSeeder.

ควรหาไฟล์ชื่อ TodoSeeder ใน /database/seeders/ โดยมีฟังก์ชันเรียกใช้ซึ่งกำหนดธุรกรรมฐานข้อมูล

    public function run()
    {
        //
    }

มาเพิ่มสิ่งที่ต้องทำกัน!

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class TodoSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('todos')->insert([
            'item' => "Breakfast",
        ]);

        DB::table('todos')->insert([
            'item' => "Lunch",
        ]);

        DB::table('todos')->insert([
            'item' => "Dinner",
        ]);
    }
}

จากนั้นมาเรียกใช้ seed ของ ด้วยคำสั่ง php artisan db:seedซึ่งจะเรียกใช้ DatabaseSeeder โดยค่าเริ่มต้นซึ่งไม่ได้ช่วยอะไรเราเลย เราจำเป็นต้องแก้ไข DatabaseSeeder เพื่อให้มันรันคลาส seed ใหม่

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Database\Seeders\TodoSeeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([TodoSeeder::class]);
    }
}

เรียกใช้คำสั่ง seed และ ควรกลับมาดำเนินการได้แล้ว!

การสร้างแบบจำลอง

ตอนนี้ต้องการสร้างคลาสโมเดลเพื่อใช้ประโยชน์จาก Eloquent ORM คลาสแบบจำลองจะช่วยให้สามารถโต้ตอบกับตารางสิ่งที่ต้องทำได้อย่างง่ายดาย

php artisan make:model Todo

ไฟล์ Todo.php ใหม่ควรมีอยู่ใน /app/models/

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Todo extends Model
{
    use HasFactory;
}

แค่นั้นแหละ ควรจะใช้งานได้นานที่ชื่อตารางเป็นชื่อคลาสรุ่นพหูพจน์ ดังนั้นโมเดลสิ่งที่ต้องทำจะใช้ตารางสิ่งที่ต้องทำในฐานข้อมูลของโดยอัตโนมัติ

หากด้วยเหตุผลบางอย่างชื่อฐานข้อมูลไม่ตรงตามแบบแผนหรือเชื่อมต่อไม่ถูกต้อง สามารถกำหนดตารางได้อย่างชัดเจน

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Todo extends Model
{
    use HasFactory;
    protected $table = 'todos';
}

การสร้างคอนโทรลเลอร์

Controller คือคลาสที่จะจัดกลุ่มฟังก์ชัน “การกระทำ” หลายอย่างเข้าด้วยกัน การดำเนินการเหล่านี้จะถูกเรียกใช้โดยเส้นทางที่เราจะระบุในภายหลัง และจะกำหนดว่าเซิร์ฟเวอร์ของเราจะส่งการตอบสนองใดกลับไป

สร้างคอนโทรลเลอร์ใหม่ด้วยคำสั่งphp artisan make:controller TodoController

คุณจะเห็นตัวควบคุมใหม่ที่สร้างขึ้นใน /app/http/controllers/

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TodoController extends Controller
{
    //
}

ลองนำเข้าโมเดลของและสร้างการดำเนินการดัชนีที่ส่งคืนสิ่งที่ต้องทำทั้งหมด


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Todo;

class TodoController extends Controller
{
    public function index () {
        // Response function allows us to send response
        return response(Todo::all(), 200)
        ->header('Content-Type', 'application/json');
    }
}

สร้างเส้นทางของเรา

เนื่องจากเรากำลังสร้าง API จะใช้กลุ่มเส้นทาง API ที่สร้างไว้ล่วงหน้าใน /routes/api.php เราจะนำเข้าคลาส Controller ของเราและเขียนเส้นทางของเรา

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TodoController;

Route::get("/todo", [TodoController::class, 'index']);

เรียกใช้เซิร์ฟเวอร์ dev และ ควรจะเห็น Todos ทั้งหมดของ ที่ /api/todo/

การใช้พารามิเตอร์

มาสร้างเส้นทางการแสดงก่อนปรับใช้เพื่อฝึกฝนเพิ่มเติม กิจวัตรที่ก้าวไปข้างหน้าจะเหมือนเดิมเสมอ

  • สร้างการกระทำตัวควบคุมใหม่
  • เชื่อมโยงการกระทำของคอนโทรลเลอร์กับเส้นทางใหม่

การดำเนินการควบคุมใหม่

ตอนนี้เราจะเพิ่มฟังก์ชันที่เรียกว่า แสดง ให้กับคอนโทรลเลอร์ของเราที่คาดว่าจะส่งรหัส

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Todo;

class TodoController extends Controller
{
    public function index () {
        // Response function allows us to send response
        return response(Todo::all(), 200)
        ->header('Content-Type', 'application/json');
    }

    public function show($id){
        return response(Todo::findOrFail($id), 200)
        ->header('Content-Type', 'application/json');
    }
}

เชื่อมโยงการดำเนินการใหม่กับเส้นทาง

มาอัปเดตเส้นทาง API กันเถอะ

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TodoController;

Route::get("/todo", [TodoController::class, 'index']);
Route::get("/todo/{id}", [TodoController::class, 'show']);

ตอนนี้เส้นทางต่อไปนี้ควรใช้งานได้ทั้งหมด

  • /สิ่งที่ต้องทำ/1
  • /สิ่งที่ต้องทำ/2
  • /สิ่งที่ต้องทำ/3

ยังไงก็ต้องฝึกเพิ่มเติมดู ขอให้ทุกคนทำได้นะครับ อ่านเพิ่มเติมได้ที่นี้ ขอบคุณ dev.to ด้วยครับ สำหรับเนื้อหา