บทเรียน Laravel 5 การใช้งาน Model

บทเรียนนี้ เราจะมาว่ากันถึงเรื่อง การใช้งาน Model เบื้องต้น อธิบายง่าย ๆ ก็คือ Model มีไว้สำหรับ การดึง ตารางของฐานข้อมูลมาใช้งานนั้นเอง
ผมจะขอยกตัวอย่าง การใช้งาน Model เพื่อใช้เรียกใช้งานตาราง Profile ครับ
ขั้นตอนแรก ให้เราทำการสร้าง ตามราง ชื่อว่า profile ตามตัวอย่างด้านล่างครับ
จากนั้น ให้ทำการเพิ่มรายการลงไป ซัก 1-2 record
เมื่อได้ข้อมูลข้างต้นแล้ว จากนี้ไปเราจะมาเริ่มทำการ เขียน Model กันครับ ข้อดีของการเขียน Model ใน laravel 5 นี้คือ เราสามารถที่จะวาง Model ไว้ตรงไหนก็ได้ ทั้งนี้เพื่อให้เกิดความเป็นระเบียบ ผู้สอนจะสร้างเป็น Models ภายใต้ app ครับ ก็จะได้ app/Models จากนั้นสร้างไฟล์ชื่อว่า Profile.php ขึ้นมา และเขียนสคริปดังตัวอย่างด้านล่าง
<?php namespace App\Models; // การกำหนดที่อยู่ของ Model use Illuminate\Database\Eloquent\Model; // การเรียกใช้งาน Eloquent ใน laravel class Profile extends Model { protected $table = 'profile'; // กำหนดชื่อของตารางที่ต้องการเรียกใช้ }
เมื่อได้ Model แล้ว จากนั้น เรามาทำการสร้าง Controller เพื่อทำการเรียกใช้งาน Model กันครับ
ไปที่ app/Http/controllers จากนั้นทำการสร้าง ไฟล์ ProfileController.php ขึ้นมาครับ ด้านในกำหนดดังนี้
<?php namespace App\Http\Controllers; //กำหนดที่อยู่ ของ Controller ที่เรียกใช้งาน use App\Models\Profile as Profile;// กำหนดชื่อ ของ Model จากที่อยู่ของ Model ที่เราเรียกใช้งาน class ProfileController extends Controller { public function getIndex(){ header('content-type:text/html; charset=utf-8'); $profile = Profile::get(); return $profile ? 'Model Profile Connect Yes!' : 'Error! Model Profile Connect False!!!'; } }
อธิบายเพิ่มเติม สำหรับคนที่ยังไม่ทราบครับ ในส่วนของ Return เป็นคำสั่ง sort if ซึ่งถ้าเขียนเต็ม ๆ จะเป็นแบบนี้ครับ
if($profile){ return 'Model Profile Connect Yes!'; }else{ return 'Error! Model Profile Connect False!!!'; }
เพื่อความกระทัดรัดของสคริป ผมจึงใช้คำสั่ง short if ให้เหลือเป็น
return $profile ? 'Model Profile Connect Yes!' : 'Error! Model Profile Connect False!!!';
เมื่อเราได้ Controller เรียบร้อยแล้ว จากนั้นเราจะมาเรียกใช้งาน ผ่าน Route อีกทีครับ ให้ทำการเปิดไฟล์ app/Http/routes.php ขึ้นมาครับ แล้วกำหนดคริปดังนี้
Route::get('check-model','ProfileController@getIndex');
จากนั้น ทดสอบเรียกใช้งาน โดย http://localhost/laravel-5/public/check-model
หากทำการเรียกใช้ Model Profile สำเร็จ ผลที่จะเป็น Model Profile Connect Yes!
หากผิดพลาด ผลที่ได้ก็จะเป็น Error! Model Profile Connect False!!!
หากทำการเชื่อมต่อ Model สำเร็จแล้ว ทีนี้เราจะมาทำการทดสอบการ query ดูครับ ซึ่งสิ่งที่ผมใช้บ่อย ๆ คือ get() กับ first() ครับ
get() คือการ query ออกมาแบบหลาย record ส่วน first() คือการ query ออกมาเพียง 1 record ที่ต้องการครับ
ตัวอย่างการใช้ where
$profiles = Profile::where('id','1')->get(); $profile = Profile::where('id','1')->first();
ให้เพื่อน ๆ ลองทำดูครับ หวังว่าบทเรียนที่ผมทำการเขียนขึ้นมานี้ จะเป็นประโยชน์แก่ เพื่อ ๆ ที่เข้ามาเรียนรู้ครับ หากเพื่อน ๆ ต้องการรับข่าวสารจากเรา สามารถกด Like จากด้านข้างได้เลยครับ
Comments
Comments are currently closed.
ละเอียดมากๆ
การ query ข้อมูลออกมากแสดงต้องเขียนในไฟล์ไหนหรอครับ
การ query จะใช้ที่ Controller และการแสดงผล จะอยู่ในส่วนของ view หรือ template blade ครับ
ขอบคุณครับ
มันขึ้นแบบนี้อะ
FatalErrorException in Users.php line 2:
Namespace declaration statement has to be the very first statement in the script
อาจจะทำการชี้ namespace ผิดก็ได้ครับ ลองประกาศ namespace เอาไว้ด้านบนสุดครับ
เพราะ namespace คือการบอกว่า ไฟล์ที่กำลังทำงานอยู่ อยู่ที่ path ไหน