โครงสร้างใน Folder Project
- app : เก็บ Model และ Controller- config : เก็บค่า Config ต่าง ๆ
- database : เก็บ Migration และ Seeding สำหรับสร้าง Table
- public : เก็บ CSS, JS ไฟล์ต่างๆ ที่ให้เข้าถึงได้ และ .htaccess ด้วย
- resource : เก็บส่วนการแสดงผล View
- routes : เก็บไฟล์ที่ใช้กำหนด Url
- storage : เก็บข้อมูล Caches, Session, ไฟล์ Blade Engine ที่ Complied
- tests : เก็บ Automated Test
- *.env : เก็บ Config Laravel กับ ฐานข้อมูล
การ Config ไฟล์
อ่านเพิ่มเติมได้ที่ https://laravel.com/docs/5.8/databaseไฟล์ที่เราต่อกับฐานข้อมูลจะใช้มี 2 จุด
1. project/config/database.php
2. .env
แก้ไขในส่วนของ Host, Port, DBName, Username และ Password ให้ถูกต้อง
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'laravel_db'), 'username' => env('DB_USERNAME', 'laravel'), 'password' => env('DB_PASSWORD', 'laravel'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
แก้ไขให้ถูกต้องเหมือนกัน
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_db DB_USERNAME=root DB_PASSWORD=
การสร้าง Model
อ่านเพิ่มเติมได้ที่ https://laravel.com/docs/5.8/eloquent#defining-modelsให้เราทำการสร้าง Model โดยใช้คำสั่ง artisan make:model
* ข้อสังเกตุ Model User จะอยู่ใน Folder app ชื่อว่า User.php และมีการเก็บ Migration ไว้ที่ Folder database/migrations/* เราเลยใช้เป็น Member แทน
# php artisan make:model Flight -m php artisan make:model Member -m
เมื่อเราสร้างเสร็จแล้วจะได้ไฟล์ Member.php ใน Folder app และไฟล์ใน Folder database/migrations/ มาอีก 1 ไฟล์
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Member extends Model { // }
... public function up() { Schema::create('members', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps(); }); } ...
ให้เราทำการแก้ไขไฟล์ Members.php เพิ่มส่วนที่เป็น $fillable ใส่ชื่อ Field ที่เรารับค่าเพื่อไปลงยังฐานข้อมูล
และทำการแก้ไขไฟล์ 2019_12_19_151341_create_members_table.php ใน Function up() เพื่อกำหนด Table ฐานข้อมูล
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Member extends Model { protected $fillable=['first_name','last_name']; }
... public function up() { Schema::create('members', function (Blueprint $table) { $table->increments('id'); $table->string('first_name'); $table->string('last_name'); $table->timestamps(); }); } ...
*** อย่าลืม Save
เสร็จแล้วสั่งสร้าง Table โดยคำสั่ง artisan migrate เสร็จแล้วกลับไปดูที่ Database
php artisan migrate
การสร้าง Controller สำหรับจัดการข้อมูล
เราจะใช้คำสั่ง artisan make:controller และบอกว่าใช้จัดการกับ resource เราจะได้ Controller ที่มาพร้อมกับ Function ให้เราใช้งานindex(), create(), store(Request $request), show($id), edit($id), update(Request $request, $id) และ destroy($id)
การใช้งานแต่ละ Function
index(): Display a listing of the resource.
create(): Show the form for creating a new resource.
store(Request $request): Store a newly created resource in storage.
show($id): Display the specified resource.
edit($id): Show the form for editing the specified resource.
update(Request $request, $id): Update the specified resource in storage.
destroy($id): Remove the specified resource from storage.
อ่านเพิ่มเติมที่ https://laravel.com/docs/5.8/controllers#resource-controllers
# php artisan make:controller PhotoController --resource php artisan make:controller MembersController --resource
เสร็จแล้วทำการสร้าง Route ไปยัง Controller ที่พึ่งสร้างไปคือ MembersController
... // สร้าง Route ชื่อ "member" ส่งไปยัง Controller ชื่อ MembersController // ส่วนนี้ถ้าเราไม่ได้มี @ แล้วต่อด้วยชื่อ Function เวลาที่เราเรียก url: members/ หลัง "/" เป็นชื่ออะไรก็จะส่งไปที่ Function ชื่อนั้น // เช่น members/create ก็จะไปเรียก Function create() ใน MembersController Route::resource('members', 'MembersController'); ...
ทำการ Import Model Member และเพิ่มคำสั่งในการบันทึกข้อมูลที่ Function store(Request $request) ใน MembersController
... // Import Model Member use App\Member; class MembersController extends Controller { ... public function store(Request $request) { // ส่วนของการ Validate ต้องมีข้อมูล first_name และ last_name $this->validate($request, ['first_name'=>'required', 'last_name'=>'required']); // ทำการสร้าง Object Member Model และเพิ่มข้อมูลที่ได้จาก $request แล้วทำการ Save ข้อมูลลง Database $member = new Member(['first_name' => $request->get('first_name'), 'last_name' => $request->get('last_name')]); $member->save(); // Redirect ไปที่ route "members.create" คือการส่งไปที่ url "members/create" return redirect()->route('members.create'); } ... }
ตัวอย่างหน้า Form ส่วนของ View
Function {{csrf_field()}} ใช้สร้าง Token หน้า Form แล้ว Function {{url('members')}} เป็นการสร้าง url ไปยัง route members
<div class="container"> <div class="row"> <div class="col-md-12"> <h2 align="center">Member Create</h2> <form method="post" action="{{url('members')}}"> {{csrf_field()}} <div class="form-group"><input type="text" name="first_name" class="form-control"></div> <div class="form-group"><input type="text" name="last_name" class="form-control"></div> <div class="form-group"><input type="submit" value="Submit" class="btn btn-primary"></div> </div> </form> </div> </div> </div>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น