การใช้งาน Model
การสร้างโมเดลสามารถทำได้ด้วยโค้ดด้านล่าง
โมเดลของคชสารจะสืบทอดมาจาก Kotchasan\Model
ตัวแปร $conn ใช้กำหนดชื่อการเชื่อมต่อ ซึ่งจะต้องตรงกันกับที่กำหนดไว้ใน settings/database.php ซึ่งถ้าไม่กำหนดไว้จะมีการใช้ค่าเริ่มต้นของโมเดล ซึ่งก็คือ mysql นั่นเอง ซึ่งจะสัมพันธ์กับส่วนนี้
เมื่อสร้างคลาสโมเดลแล้ว สามารถเรียกใช้ได้ 2 วิธี
หรือ
ซึ่งเมื่อมีการเรียกใช้โมเดลแล้ว จะมีการเชื่อมต่อกับฐานข้อมูลตามที่กำหนดไว้ในทันที
เมธอดของโมเดล
เมธอดนี้ใช้อ่านค่าการเชื่อมต่อฐานข้อมูลตามที่กำหนดไว้ โดยจะคืนค่าเป็น Object ของไดรเวอร์ที่ใช้ในการเชื่อมต่อฐานข้อมูลของคชสาร เช่น Kotchasan\Database\PdoMysqlDriver
เมธอดนี้จะคืนค่าชื่อตารางตามที่กำหนดไว้ใน settings/database.php หัวข้อ tables โดยที่เมธอดนี้จะคืนค่าชื่อตารางรวม prefix ถ้ามีการกำหนดไว้ และหากไม่มีการกำหนดชื่อตารางไว้ จะใช้ค่าที่ส่งเข้าไปเป็นชื่อตารางโดยปริยาย เช่น
เมธอดนี้จะคืนค่าชื่อตารางเหมือนกับเมธอด getTableName แต่จะมีการเติม "ชื่อฐานข้อมูล" และครอบชื่อตารางด้วย `` ซึ่งปกติแล้วเมธอดนี้จะใช้ร่วมกันกับการใช้งาน CRUD ตัวอย่าง
ผลลัพท์
สุดท้าย เมธอด getSetting ใช้สำหรับอ่านค่ากำหนดของฐานข้อมูล ตามที่เรากำหนดไว้
เช่น
ผลลัพท์
namespace Index\Index;
class Model extends \Kotchasan\Model
{
// ชื่อของการเชื่อมต่อ
protected $conn = 'mysql';
// code Model here
}
โมเดลของคชสารจะสืบทอดมาจาก Kotchasan\Model
ตัวแปร $conn ใช้กำหนดชื่อการเชื่อมต่อ ซึ่งจะต้องตรงกันกับที่กำหนดไว้ใน settings/database.php ซึ่งถ้าไม่กำหนดไว้จะมีการใช้ค่าเริ่มต้นของโมเดล ซึ่งก็คือ mysql นั่นเอง ซึ่งจะสัมพันธ์กับส่วนนี้
/* settings/database.php */
return array(
'mysql' => array(
'dbdriver' => 'mysql',
'username' => 'plus',
'password' => '1234',
'dbname' => 'gcms_plus'
),
เมื่อสร้างคลาสโมเดลแล้ว สามารถเรียกใช้ได้ 2 วิธี
$model = new \Index\Index\Model;
หรือ
$model = \Index\Index\Model::create()
ซึ่งเมื่อมีการเรียกใช้โมเดลแล้ว จะมีการเชื่อมต่อกับฐานข้อมูลตามที่กำหนดไว้ในทันที
เมธอดของโมเดล
$model->db();
เมธอดนี้ใช้อ่านค่าการเชื่อมต่อฐานข้อมูลตามที่กำหนดไว้ โดยจะคืนค่าเป็น Object ของไดรเวอร์ที่ใช้ในการเชื่อมต่อฐานข้อมูลของคชสาร เช่น Kotchasan\Database\PdoMysqlDriver
// อ่านชื่อตารางที่กำหนดไว้
$model->getTableName('world')
เมธอดนี้จะคืนค่าชื่อตารางตามที่กำหนดไว้ใน settings/database.php หัวข้อ tables โดยที่เมธอดนี้จะคืนค่าชื่อตารางรวม prefix ถ้ามีการกำหนดไว้ และหากไม่มีการกำหนดชื่อตารางไว้ จะใช้ค่าที่ส่งเข้าไปเป็นชื่อตารางโดยปริยาย เช่น
- หากมีการกำหนดค่า prefix = gcms และชื่อตาราง world = worlds ฟังก์ชั่นจะคืนค่าชื่อตาราง world ว่า gcms_worlds
- หากไม่มีการกำหนดค่า prefix ไว้ จะได้ชื่อตาราง world ว่า worlds
- และหากไม่ได้มีการกำหนดค่าชื่อตารางไว้ (ที่ tables) เมื่ออ่านชื่อตาราง world จะได้ชื่อตาราง world
- และหากไม่มีก่ารกำหนดชื่อตารางแต่มีการกำหนด prefix ไว้ จะได้ชื่อตาราง world ว่า prefix_world
// อ่านชื่อตารางที่กำหนดไว้ รวมชื่อฐานข้อมูล
$model->getFullTableName('world')
เมธอดนี้จะคืนค่าชื่อตารางเหมือนกับเมธอด getTableName แต่จะมีการเติม "ชื่อฐานข้อมูล" และครอบชื่อตารางด้วย `` ซึ่งปกติแล้วเมธอดนี้จะใช้ร่วมกันกับการใช้งาน CRUD ตัวอย่าง
$sql = "SELECT * FROM ".$model->getFullTableName('world');
echo $sql;
ผลลัพท์
SELECT * FROM `gcms_plus`.`prefix_world`
สุดท้าย เมธอด getSetting ใช้สำหรับอ่านค่ากำหนดของฐานข้อมูล ตามที่เรากำหนดไว้
$model->getSetting($name)
เช่น
echo $model->getSetting('dbmame')
ผลลัพท์
gcms_plus