ภาพประกอบ : zend framework fetch all

zend framework วิธีแสดงข้อมูลจาก database

zend framework คราวที่แล้วเราได้ดูกันในเรื่องของการเพิ่มข้อมูลลงไปใน database กันแล้ววันนี้เราจะมาดูกันในส่วนของการ view หรือการ select ข้อมูลออกมาจากฐานข้อมูลกันบ้างครับว่ามีวิธีการทำงานอย่างไรบ้าง

zend framework กับวิธีการเลือกข้อมูลจากฐานข้อมูลมาแสดง

ภาพประกอบ : zend framework fetch all

ภาพประกอบ : zend framework fetch all

หลังจากที่เราทำการ save หรือเพิ่มข้อมูลต่างๆลงไปในฐานข้อมูลกันได้แล้ว คราวนี้เราลองมาดูกันหน่อยครับว่า zend นั้นเค้าเตรียมวิธีดึงข้อมูลออกมาจากฐานข้อมูลเพื่อมาแสดงบนหน้าเว็บนี่อย่างไร มีวิธีการที่ไม่ยาก ไม่ซับซ้อนนะครับ แถมยังรองรับหลากหลายเงื่อนไขด้วย

เราจะเริ่มต้นมาลองดูวิธีแรกกันก่อนโดยเป็นวิธีแบบ ดึงค่าข้อมูลทุกอย่างออกมาทั้งหมดจากตารางนั้นเองนะครับ เราจะใช้วิธีเรียกผ่านทาง function fetchAll() ที่ทาง zend เค้าเตรียมไว้ให้นะครับ

fetchAll()

การ fetch นั้นก็เหมือนกับการ fetch ทั่วไปของภาษา php ที่เราคุ้นเคยกันนั้นแหละครับ เพียงแต่ว่าใน framework ส่วนใหญ่นั้นเค้าจะเตรียมข้อมูลมาไว้ให้เราแล้วเรา เราก็จะสะดวกในการเรียกใช้มากขึ้นนั้นเอง ผมขอยกตัวอย่างให้เห็นเพื่อเกริ่นนำสักรอบนะครับ

Code PHP MySQL
$oColour = $db->prepare("SELECT * FROM fruit");
$oColour->execute();
$result = $oColour->fetchAll();

ตามตัวอย่างด้านบนนี่เป็นการเรียกข้อมูลออกมาจากฐานข้อมูลแบบทั้งหมดในลักษณะของ PDO นะครับ จะเห็นว่าวิธีเดิมก็ไม่ได้ยากมากนักคือมีการใช้คำสั่ง SQL จากนั้นก็ทำการ execute แล้วสุดท้ายพอเราได้ข้อมูลมาเราก็ทำการ fetchAll ค่าทั้งหมดมันออกมา ซึ่งส่วนใหญ่การใช้ fetchAll มักจะใช้งานกับข้อมูลที่มันไม่ได้มีค่าเพียงแค่ 1 row อยู่แล้วนะครับ ทีนี้มาลองดูแบบ zend กันบ้าง

Code Zend fectchAll
// SQL statement
$oSelectCustomerData = $db->select()->from("customer_tbl");
// SQL Query
$oCustomerData = $db->fetchAll($oSelectCustomerData);

จากตัว code ด้านบนนี่จะเห็นนะครับว่า ด้านบนสุดนั้นเหมือนกันกับทางแบบ PDO ทั่วไปเลย เพียงแค่ตัดในส่วนของการ execute ออกไปเท่านั้นเอง และการเขียน SQL ก็ไม่ต้องระบุว่าจะต้อง “เลือกทั้งหมดจาก” เพียงเราใช้งาน select() ก็พอ

ทีนี้มาลองดู function สำหรับเรียกเต็มๆแบบ MVC กันดูนะครับ

Code Zend fectchAll
public function viewAllCustomer()
{
// Set default adapter
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
// SQL statement
$oSelectCustomerData = $db->select()->from("customer_tbl");
// SQL Query
$oCustomerData = $db->fetchAll($oSelectCustomerData);
// Send To Controller
return $oCustomerData;
}

จากในตัวอย่างนี้คือการที่หยิบเอา code ทีแรกออกมาเขียนแล้วก็ส่งค่า return กลับไปที่ controller เท่านั้นเองนะครับ แบบนี้ทาง controller ก็สามารถเรียกไปใช้งานได้เลยแบบนี้

public function indexAction()
{
// initial table
$oCustomerTbl = new Application_Model_DbTable_CustomerTbl();
// call function
$oCustomerData = $oCustomerTbl->viewAllCustomer();
//Send to view
$this->view->oCustomerData = $oCustomerData;
}
ภาพประกอบ : zend framework view all

ภาพประกอบ : zend framework view all

นอกจากเขียนเต็มรูปแบบในลักษณะนี้แล้วเรายังสามารถเขียนในลักษณะย่อสั้นๆได้อีกด้วยนะครับ โดยใช้ความสามารถในรูปแบบของ OOP ให้เกิดประโยชน์อย่างนี้

public function findAll()
{
$oCustomerData = $this->fetchAll();
return $oCustomerData;
}

ทีนี้นอกจากการเลือกดูทั้งหมด zend ยังเตรียมวิธีทำงานกับเงื่อนไต่างๆกันไว้ให้เราอีกด้วย เดี๋ยวไว้เรามาต่อกันในตอนหน้าดีกว่านะครับ

ขอให้สนุกกับการเขียน code นะครับ

อ้างอิง http://framework.zend.com/manual/1.12/en/zend.db.table.html