ใช้ Query Builder Class ในฟังก์ชั่นของ model ตอนที่ 2

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
codeigniter codeigniter 3 query builder

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ codeigniter codeigniter 3 query builder

ดูแล้ว 6,641 ครั้ง


จากตอนที่แล้ว เราเรียนรู้วิธีการสร้างรูปแบบของ model เพื่อนำมาใช้งาน
ร่วมกับโปรเจ็คของเรา 
 
การสร้าง model และเรียกใช้งาน พร้อมแนวทางการประยุกต์ ตอนที่ 1 
 
เนื้อหาตอนต่อจากนี้ จะเป็นการเข้าไปเขียนโค้ดให้กับฟังก์ชั่นของ model ที่เราสร้าง
โดยจะหยิบการศึกษาเกี่ยวกับ query builder class หรือ class เกี่ยวกับการใช้งานฐาน
ข้อมูลของ codeigniter มาใช้ด้วย
 
ก่อนเข้าไปในรายละเอียด ตามโตรงสร้างโปรเจ็คของเรา ให้เราสร้างตาราง tbl_service
เพื่อสำหรับเก็บข้อมูล "บริการของเรา" ตามนี้
 
CREATE TABLE IF NOT EXISTS `tbl_service` (
  `service_id` int(10) unsigned NOT NULL,
  `service_title` varchar(200) NOT NULL,
  `service_detail` text NOT NULL,
  `service_img` varchar(50) NOT NULL,
  `service_update` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `tbl_service`
  ADD PRIMARY KEY (`service_id`);

ALTER TABLE `tbl_service`
  MODIFY `service_id` int(10) unsigned NOT NULL AUTO_INCREMENT;
 
เสร็จแล้วให้เราเปิดไฟล์ model ของเรา ซึ่งชื่อ Service_model.php อยู่ในโฟลเดอร์
apps > models > admin
 
<?php
class Service_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }
    
    public function getlist(){
        echo "List";
    }    
    
    public function create(){
        echo "Create";
    }
    
    public function view(){
        echo "View";
    }    
    
    public function edit(){
        echo "Edit";
    }  
    
    public function delete(){
        echo "Delete";
    }        

}
 
 
ฟังก์ชั่นที่เราสนใจ และพูดถึงในตอนนี้คือ getlist() view() และ delete()
 
 

การแสดงข้อมูลด้วย query builder class

 
ฟังก์ชั่นแรกที่เราจะพูดถึง คือ getlist() เราจะใช้สำหรับดึงรายการข้อมูลของตาราง tbl_service
มาแสดง และเพื่อให้เห็นผลการทำงาน ให้เราลองเพิ่มข้อมูลสมมติเข้าไปในตาราง tbl_service
ผ่าน phpmyadmin ก่อนสัก 2-3 รายการ
 
    public function getlist(){
        echo "List";
    }    
 
ในการดึงข้อมูลเราจะใช้ 
 
$this->db->get()
 
ตัวอย่าง
 
$query = $this->db->get('tbl_service');  // คิวรี่คำสั่ง: SELECT * FROM tbl_service

$query = $this->db->get('tbl_service', 10, 20);
// คิวรี่คำสั่ง: SELECT * FROM tbl_service LIMIT 20, 10
 
 
ถ้าต้องการเลือกเฉพาะ ฟิลด์รายการที่ต้องการ จะใช้คำสั่ง
 
$this->db->select()
 
ตัวอย่าง
 
$this->db->select('title,detail');
$query = $this->db->get('tbl_service'); 
// คิวรี่คำสั่ง: SELECT title,detail FROM tbl_service
 
แบบนี้เป็นต้น 
* รายละเอียดฟังก์ชั่นเพิ่มเติม ให้ดูตัวอย่างในคู่มือของ codeigniter ในที่นี้จะใช้เท่าที่จำเป็นสำหรับโปรเจ็ค

 
สำหรับฟังก์ชั่น getlist() เราจะดึงข้อมูลทั้งหมด และ return ผลกลับมาในรุปแบบ array 
ดังนั้นเราจะใช้ 
 
$query = $this->db->get('tbl_service');
return $query->result_array();  // ส่งผลลัพธ์กลับมาเป็น array ข้อมูลไว้ใช้งาน
 
จะได้ฟังก์ชั่น getlist() เป็นดังนี้
 
    public function getlist(){
        $query = $this->db->get('tbl_service');
        return $query->result_array();
    }    
 

การแสดงข้อมูลด้วย query builder class แบบมีเงื่อนไข

 
ฟังก์ชั่นที่สองคือ view()  เนื่องจากฟังก์ชั่นนี้เราใช้สำหรับดังข้อมูลอ้างอิงเงื่อนไข service_id
ดังนั้นจำเป็นต้องกำหนด parameter เพิ่มเติมให้ฟังก์ชั่นนี้ 
 
    public function view($id){
        echo "View";
    }    
 
และเราจะใช้ การดังข้อมูลด้วย
 
$this->db->get_where()
 
ตัวอย่างการใช้งาน
 
$query = $this->db->get_where('tbl_service',array('service_id'=>'1'));
// คิวรี่คำสั่ง: SELECT * FROM tbl_service WHERE service_id=1
 
ดั้งนั้นในฟังก์ชั่น view() ของเราจะได้เป็น
 
    public function view($id){  // มี $id เป็น parameter ไว้กำหนดเงื่อนไข
        $query = $this->db->get_where('tbl_service',array('service_id'=>$id));
        return $query->row_array(); // ส่งข้อมูลผลัพธ์กลับเป็น array แถวข้อมูล
    }    
 

การลบข้อมูลด้วย query builder class

 
ส่วนสุดท้ายที่จะกล่าวถึงคือฟังก์ชั่น delete() สำหรับฟังก์ชั่นนี้จะเป็นการลบรายการข้อมูล 
อ้างอิงจาก service_id เช่นเดียวกับ view ดังนั้นจึงต้องมีการกำหนด parameter เพื่อรับค่า
จะได้เป็น
 
    public function delete($id){
        echo "Delete";
    }        
 
และเราจะใช้คำสั่งต่อไปนี้ในการลบข้อมูล
 
$this->db->delete()
ตัวอย่างการใช้งาน
 
$this->db->delete('tbl_service', array('service_id' => '1'));  
// คิวรี่คำสั่ง: // DELETE FROM tbl_service WHERE service_id = 1
 
ดั้งนั้นในฟังก์ชั่น delete() ของเราจะได้เป็น
 
    public function delete($id){
        return $this->db->delete('tbl_service', array('service_id' =>$id)); 
        // คืนค่าผลการคิวรี่
    }        
 
 
และเราจะได้ไฟล์ Service_model.php สำหรับใช้งานเบื้องต้นดังนี้
 
<?php
class Service_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }
    
    public function getlist(){
        $query = $this->db->get('tbl_service');
        return $query->result_array();
    }    
    
    public function create(){
        echo "Create";
    }
    
    public function view($id){  // มี $id เป็น parameter ไว้กำหนดเงื่อนไข
        $query = $this->db->get_where('tbl_service',array('service_id'=>$id));
        return $query->row_array(); // ส่งข้อมูลผลัพธ์กลับเป็น array แถวข้อมูล
    }    
    
    public function edit(){
        echo "Edit";
    }  
    
    public function delete($id){
        return $this->db->delete('tbl_service', array('service_id' =>$id)); 
        // คืนค่าผลการคิวรี่
    }        

}
 

 

การเรียกใช้งาน model

 
เมื่อเราได้ฟังก์ชั่นเบื้องต้นของ model แล้วต่อไปเราจะเรียกใช้งานในไฟล์ views 
ให้เราเปิดไฟล์ admin_service.php ในโฟลเดอร์ apps > views > admin 
 
ส่วนแรก เราจะเรียกใช้ ฟังก์ชั่น getlist() ของ model เพื่อนำข้อมูลมาแสดงในส่วน $action เท่ากับ null
โดยรุปแบบการเรียกใช้งาน model เป็นดังนี้
 
$this->ชื่อ model -> ชื่อฟังก์ชั่น
 
ดังนั้นเราจะได้เป็น
 
$result = $this->service_model->getlist();
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ null เราจะได้เป็นดังนี้
 
<?php if($action==null){?>
<?php
$result = $this->service_model->getlist();
?>
<a href="<?=base_url('admin/service/create')?>" class="btn btn-primary btn-sm">Create</a>
<br><br>
<table class="table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th width="50" class="text-center">#</th>
            <th>Title</th>
            <th width="150" class="text-center">Modify Date</th>
            <th width="150" class="text-center">Manage</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i_num=0;
        if(count($result)>0){
            foreach($result as $row){
                $i_num++;
        ?>
        <tr>
            <td class="text-center"><?=$i_num?></td>
            <td><?=$row['service_title']?></td>
            <td class="text-center"><?=$row['service_update']?></td>
            <td class="text-center">
                <a href="<?=base_url('admin/service/edit/'.$row['service_id'])?>" class="btn btn-success btn-sm">
                <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                </a>
                &nbsp;&nbsp;
                 <a href="<?=base_url('admin/service/delete/'.$row['service_id'])?>" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                </a>
                
            </td>
        </tr>
        <?php } ?>
        <?php } ?>
    </tbody>
</table>
<?php } ?>
 
จากโค้ด การทำงานก็คือ ไปดึงข้อมูลจากตาราง tbl_service แล้วคืนค่ากลับมาเป็น array ข้อมูล
มาเก็บไว้ในตัวแปร $result จากนั้นเราก็ทำการวนลูป แสดงค่าตัวแปร array ด้วยคำสั่ง foreach
 
 
ส่วนที่สอง เราจะเรียกใช้งานฟังก์ชั่น delete() ของ model ในส่วนของ $action เท่ากับ delete
รูปแบบการใช้งาน
 
$query = $this->service_model->delete($id);  
       
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ delete เราจะได้เป็นดังนี้
 
<?php if($action=="delete"){?>
<?php
$query = $this->service_model->delete($id);                                  
?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<?php if($query){?>
<div class="bg-success text-center" style="padding:10px;">
    <p class="text-success">Delete data complete</p>
    <a href="<?=base_url('admin/service')?>" class="text-success">< Back > </a>
</div>
<?php } ?>
<?php } ?>
 
จากโค้ด การทำงาน เมื่อมีการลบข้อมูล และส่งกลับค่าการคิวรี่มา ก็จะแสดงข้อความ
แจ้งว่าข้อมูลได้ถูกลบเรียบร้อยแล้ว
 
ส่วนที่สาม ส่วนสุดท้ายของการเรียกใช้งานที่จะกล่าวถึงในเนื้อหาตอนนี้คือ การใช้งานฟังก์ชั่น view() ของ
model ในส่วนของ $action เท่ากับ edit โดยในที่นี้เราจะยังไม่เอาข้อมูลมาใช้โดยตรง แต่จะแสดงผล
ด้วยตัวอย่างข้อมูล array ที่ได้ก่อน
รูปแบบการใช้งาน
 
$row = $this->service_model->view($id);         
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ edit เราจะได้เป็นดังนี้
 
<?php if($action=="edit"){?>
<pre>
<?php
$row = $this->service_model->view($id);         
print_r($row);
?>
</pre>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/edit/'.$id)?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Edit Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Edit Service">
        </td>
    </tr>
</tbody>
</table>   

        
</form>
<?php } ?>
 
จากโค้ด หลักการทำงาน จะทำการดึงข้อมูลจากตาราง tbl_service โดยเงื่อนไข service_id เท่ากับค่า
ตัวแปร $id ที่ส่งมา และในตัวอย่าง เป็นการรับค่าเป็นข้อมูลเดียว เรารับค่าด้วยตัวแปร $row
และเมื่อทำการ print_r() ข้อมูลดูก็จะได้รายการข้อมูลในรูปแบบ array ไว้ใช้งาน

 
สุดท้ายเราจะได้ไฟล์ admin_service.php ในโฟลเดอร์ apps > views > admin 
เบื้องต้นดังนี้
 
<div class="container">
    
Service  
<br><br>
<?php if($action==null){?>
<?php
$result = $this->service_model->getlist();
?>
<a href="<?=base_url('admin/service/create')?>" class="btn btn-primary btn-sm">Create</a>
<br><br>
<table class="table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th width="50" class="text-center">#</th>
            <th>Title</th>
            <th width="150" class="text-center">Modify Date</th>
            <th width="150" class="text-center">Manage</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i_num=0;
        if(count($result)>0){
            foreach($result as $row){
                $i_num++;
        ?>
        <tr>
            <td class="text-center"><?=$i_num?></td>
            <td><?=$row['service_title']?></td>
            <td class="text-center"><?=$row['service_update']?></td>
            <td class="text-center">
                <a href="<?=base_url('admin/service/edit/'.$row['service_id'])?>" class="btn btn-success btn-sm">
                <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                </a>
                &nbsp;&nbsp;
                 <a href="<?=base_url('admin/service/delete/'.$row['service_id'])?>" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                </a>
                
            </td>
        </tr>
        <?php } ?>
        <?php } ?>
    </tbody>
</table>
<?php } ?>

<?php if($action=="create"){?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/create')?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Add New Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Add Service">
        </td>
    </tr>
</tbody>
</table>    
    

</form>
<?php } ?>


<?php if($action=="edit"){?>
<pre>
<?php
$row = $this->service_model->view($id);         
print_r($row);
?>
</pre>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/edit/'.$id)?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Edit Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Edit Service">
        </td>
    </tr>
</tbody>
</table>   

        
</form>
<?php } ?>

<?php if($action=="delete"){?>
<?php
$query = $this->service_model->delete($id);                                  
?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<?php if($query){?>
<div class="bg-success text-center" style="padding:10px;">
    <p class="text-success">Delete data complete</p>
    <a href="<?=base_url('admin/service')?>" class="text-success">< Back > </a>
</div>
<?php } ?>
<?php } ?>

</div>
 
ขอจบในส่วนของ 3 ฟังก์ชั่นเบื้องต้น กับการใช้งาน query builder class ใน model ไว้เท่านี้
สำหรับในส่วนของ create() และ edit() จะขอกล่าวในลำดับต่อไป เพราะ
ในสองส่วนี่เหลือนี้ เราจะศึกษาเรื่องของการตรวจสอบฟอร์มข้อมูล ก่อนทำการบันทึกด้วย รอติดตาม


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ



อ่านต่อที่บทความ









เนื้อหาที่เกี่ยวข้อง









URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ