version 4.1.0

บทที่ 8 การใช้งานการเชื่อมต่อฐานข้อมูล

  พุธที่ 11 มีนาคม พ.ศ. 2558 เวลา 01:37:59 น.      5,974 ครั้ง


บทที่ 8 การใช้งานการเชื่อมต่อฐานข้อมูล

แนะนำ

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

บทนี้มีอะไรบ้าง

  1. การเชื่อมต่อฐานข้อมูลผ่าน Model Class
  2. การดึงข้อมูลจากฐานข้อมูลผ่าน Model Class
  3. การเพิ่มข้อมูลจากฐานข้อมูลผ่าน Model Class
  4. การแก้ไขข้อมูลจากฐานข้อมูลผ่าน Model Class
  5. การลบข้อมูลจากฐานข้อมูลผ่าน Model Class

ก่อนอื่นเลยให้เราทำการตั้งค่าการเชื่อมต่อฐานข้อมูลของเราซะก่อน ตัวอย่างนี้ผมได้เลือกใช้ Database เป็น MySQL

ไฟล์การตั้งค่าการเชื่อมต่อฐานข้อมูลอยู่ที่ ไดเรคทอรี่ [skeleton]\app\config\database.php

ตัวอย่างคำสั่ง

 'mysql' => array(
    'read' => array(
        'host' => '127.0.0.1', // or localhost
    ),
    'write' => array(
        'host' => '127.0.0.1' // or localhost
    ),
    'driver'    => 'mysql',
    'database'  => 'db_demo',
    'username'  => 'root',
    'password'  => '', // or 1234
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

สร้างตาราง tbl_profile สำหรับใช้ทดสอบขึ้นมา

 CREATE TABLE `tbl_profile` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `lastname` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `firstname` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `tbl_profile` VALUES ('1', 'Admin', 'Administrator');
INSERT INTO `tbl_profile` VALUES ('2', 'Demo', 'Demo');
INSERT INTO `tbl_profile` VALUES ('3', 'Test', 'Test');

สร้างตาราง tbl_profile ด้วยคำสั่ง SQL ลงในฐานข้อมูล db_demo หรือ ตามความต้องการของเรา

ตัวอย่างคำสั่ง

 class Profile extends Eloquent {
                                
    public $timestamps = false;
    protected $table = 'tbl_profile';

}

สร้างไฟล์ Model ชื่อว่า Profile.php ขึ้นมาและนำไปเก็บไว้ในไดเรคทอรี่ [skeleton]\app\models\Profile.php



ดึงข้อมูลออกมาทั้งหมด

 // ดึงข้อมูล
$profiles = Profile::all(); 
                                
// แสดงข้อมูล
foreach ($profiles as $recode){
    echo $recode->user_id;
    echo $recode->firstname;
    echo $recode->lastname;
} 

ค่าที่ได้กลับมาจะเป็น array object เท่านั้น

ดึงข้อมูลเฉพาะ Primary Key ที่ต้องการ

 // 1 คือ Primary Key ที่เราต้องการ
$profile = Profile::find(1);
// ปล. ต้องเป็น Primary Key ชนิด Int เท่านั้น ที่จะสามารถใช้วิธีนี้ได้ 

// แสดงข้อมูล
echo $recode->user_id;
echo $recode->firstname;
echo $recode->lastname;

ค่าที่ได้กลับมาจะเป็น data object เท่านั้น

ดึงข้อมูลแบบมีเงื่อนไข Where

 // เงื่อนไขคือ user_id > 1
$profiles = Profile::where('user_id', '>', 1)->take(10)->get();

// แสดงข้อมูล
foreach ($profiles as $recode){
    echo $recode->user_id;
    echo $recode->firstname;
    echo $recode->lastname;
} 

ค่าที่ได้กลับมาจะเป็น array object เท่านั้น

ดึงข้อมูลแบบมีเงื่อนไข Where Raw

 // เงื่อนไขคือ user_id > 1 and user_id < 100
$profiles = Profile::whereRaw('user_id > ? and user_id < 100', array(1))->get(); 

// แสดงข้อมูล
foreach ($profiles as $recode){
    echo $recode->user_id;
    echo $recode->firstname;
    echo $recode->lastname;
} 

ค่าที่ได้กลับมาจะเป็น จำนวน ที่ระบบค้นหาข้อมูลเจอ ตามเงื่อนไขที่เรากำหนด

ดึงข้อมูลจำนวน Recode ที่ค้นหาเจอ

 // เงื่อนไขคือ user_id > 1
$count = Profile::where('user_id', '>', 1)->count();

// แสดงข้อมูล
echo $count;

ค่าที่ได้กลับมาจะเป็น "จำนวน" ที่ระบบค้นหาข้อมูลเจอ ตามเงื่อนไขที่เรากำหนด



การใช้งาน Method Save()

 // สร้างตัวแปร object
$profile = new Profile();

// เพิ่มข้อมูลที่ต้องการ
// $profile->[FieldName] = $value;
$profile->user_id = 9; // กรณี ถ้า PK เป็น auto
$profile->firstname = 'Eakkabin';
$profile->lastname = 'Jaikeawma';

// บันทึก
$profile->save();

// หรือ ตรวจสอบการบันทึกข้อมูล "สำเร็จ" ก่อน
if($profile->save()) {
    echo 'บันทึกข้อมูลสำเร็จ';
} else {
    echo 'สามารถบันทึกข้อมูลได้';
}


การใช้งาน Method Find()

 
// หากจะใช้ find(1) ได้ Field Name จะต้องเป็น id เท่านั้นนะครับ                    
$profile = Profile::find(1); // 1 คือ id (Pk) = 1

// หรือ ถ้า Field Name ไม่ใช่ id 
$profile = Profile::where("user_id","=",1)->first();

// แก้ไขข้อมูลที่ต้องการ
// $profile->[FieldName] = $value;
$profile->firstname = 'Edit - Eakkabin';
$profile->lastname = 'Edit - Jaikeawma';

// แก้ไข
$profile->save();

// หรือ ตรวจสอบการแก้ไขข้อมูล "สำเร็จ" ก่อน
if($profile->save()) {
    echo 'แก้ไขข้อมูลสำเร็จ';
} else {
    echo 'สามารถแก้ไขข้อมูลได้';
}

การใช้งาน Method update()

 
$profile = Profile::where('user_id', '>', 1)
    ->update(array('firstname' => 'Edit - Eakkabin','lastname' => 'Edit - Jaikeawma'));


การใช้งาน Method delete()

 
// หากจะใช้ find(1) ได้ Field Name จะต้องเป็น id เท่านั้นนะครับ                    
$profile = Profile::find(1); // 1 คือ id (Pk) = 1

// ลบข้อมูล
$profile->delete();

// หรือ ถ้า Field Name ไม่ใช่ id 
Profile::where('user_id', '=', 1)->delete();



Credit

  ขอบคุณข้อมูลจากเว็บไซต์ laravel.com


นักแปล / นักเขียน / เรียบเรียง

author

เอกบิณ ใจแก้วมา (แม็ก)

"โปรแกรมเมอร์ตัวเล็ก ๆ" สะสมประสบการณ์ด้านการพัฒนาซอฟแวร์มามากกว่า 11 ปี
# ติดตามผลงานได้ที่ | พบกับเราที่ Google+ | Facebook






Comment