Laravel เป็นเฟรมเวิร์กเว็บ PHP แบบโอเพ่นซอร์สฟรี ซึ่งสร้างโดย Taylor Otwell และมีไว้สำหรับการพัฒนาเว็บแอปพลิเคชันตามรูปแบบสถาปัตยกรรม model–view–controlle
PHP ยังคงเป็นภาษาที่ได้รับความนิยมมาถึงปัจจุบันได้รับความนิยมอย่างกว้างขวางเนื่องจากความนิยมของ WordPress แต่มีส่วนร่วมในสิทธิ์ของตนเองและพร้อมที่จะจับส่วนแบ่งการตลาดเพิ่มเติมในการพัฒนาแอปพลิเคชันสมัยใหม่
เริ่มแรกเครื่องมือที่ควรมีติดตั้งไวก่อน
- PHP 7.4.9 หรือใหม่กว่า (Xampp )
- composer (getcomposer.org)
เมื่อจัดการเครื่องมือทั้งหมดข้างต้นแล้ว ให้เปิดเทอร์มินัลของในไดเร็กทอรีที่ต้องการแก้ไขและเรียกใช้คำสั่งต่อไปนี้
composer create-project laravel/laravel example-app
หลังจากรันคำสั่งโปรเจคจะได้สร้างขึ้น
ตารางคำสั่ง
Command | Purpose |
---|---|
php artisan serve | start development server |
php artisan db | enter database console |
php artisan make:migration migrationName | create a new migration |
php artisan migrate | run migrations |
php artisan migrate:rollback | rollback last migration |
php artisan migrate:reset | rollback all migrations |
php artisan migrate:refresh | rollbacks all migrations then remigrates |
php artisan make:seeder | make a seed file |
php artisan db:seed | run your seed files |
php artisan make:model ModelName | make a new model |
php artisan make:controller ControllerName | make 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 ด้วยครับ สำหรับเนื้อหา