สอน Yii 2 : ติดต่อฐานข้อมูล MySQL และ Insert ข้อมูล
การเชื่อมต่อฐานข้อมูลและการ Query ข้อมูลสำหรับ Yii Framework ค่อนข้างจะสะดวกสบายครับ เราสามารถสืบทอด
คุณสมบัติของคลาส ActiveRecord มาใช้งานได้ การสืบทอดคุณสมบัติคลาส ActiveRecord เป็นเสมือนการกำหนดให้
คลาสนั้นเป็น 1 table ในฐานข้อมูลและมีตัวแปรคือ column name ทั้งหมดใน table นั้น หลักการคล้าย ๆ กับการสร้าง
view และ controller ที่เมื่อสร้าง UserController ต้องมีโฟลเด้อชื่อว่า user ใน view
ในบทความที่แล้ว ใช้งาน Model ร่วมกับ View และ Controller เราได้ทำความเข้าใจและใช้งานส่วนของ view, controller และ model ในบทความนี้ จะใช้ไฟล์โปรเจคเดิมที่เราได้สร้างไว้ ซึ่งมีโครงสร้างดังนี้
models/User.php views/user/index.php controllers/UserController.php
สร้างฐานข้อมูลและ User Table ตามชื่อ Model
- 1. ก่อนอื่นให้เราเข้าไปสร้างฐานข้อมูลโดยให้ตั้งชื่อว่า yii2basic
- 2. จากนั้นให้สร้าง Table โดยให้กำหนด column name ต่าง ๆ ดังรูปด้านล่าง
- 3. เปิดไฟล์ config/db.php เปลี่ยนรายละเอียดการติดต่อฐานข้อมูลให้ตรงกับที่เราตั้งไว้
return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ];
namespace app\models; use Yii; use yii\db\ActiveRecord; class User extends ActiveRecord // เปลี่ยนมาใช้คุณสมบัติของ ActiveRecord คลาส { public static function tableName() { return 'User'; // เป็นการบอกว่าจะควบคุม table ไหนในฐานข้อมูล } }
ทดสอบ Insert ข้อมูลเข้าไปในฐานข้อมูล
จากการที่เราได้สร้าง table ในฐานข้อมูลและทำการสืบทอดคุณสมบัติ ActiveRecord จะทำให้เราสามารถสั่ง insert
ข้อมูลลงไปใน User table ได้ด้วยคำสั่ง $User->save() และสามารถกำหนด value ใน column ต่าง ๆ ได้ดังนี้
$User = new User(); $User->name = "Witoon Pomipon"; $User->email = "[email protected]"; $User->save();
ให้ทดสอบโดยการเปิดไฟล์ controllers/UserController.php และแก้ไขโค๊ดในไฟล์เดิมเป็นตามโค๊ดด้านล่างครับ
namespace app\controllers; use Yii; use yii\web\Controller; use app\models\User; // เปิดการเข้าถึง User Model class UserController extends Controller { public function actionIndex() { $User = new User(); // ประกาศตัวแปร $User มีค่าเท่ากับ User Model $User->name = "Witoon Pomipon"; $User->email = "[email protected]"; $User->save(); return $this->render('index', [ // สั่ง render หน้า index view 'User' => $User, // พร้อมกับส่ง User Model ออกไปด้วย ]); } }
ส่วนใน views/user/index.php เราจะเขียนเพื่อแสดงผล name และ email ได้ดังนี้ครับ
<div class="site-about"> <p> Hi, I am beginner in Yii นาจาา <?php echo $User->name." / ".$User->email; ?> </p> </div>
ถ้าลองรันตัวเว็บผ่านโปรแกรมเว็บเบราว์เซอร์ผลลัพธ์ที่ได้ คือ
Hi, I am beginner in Yii นาจาา Witoon Pomipon / [email protected]
ข้อมูล name และ email ที่เราระบุไว้ก็จะถูกบันทึกลงในฐานข้อมูล
เพิ่มเติมครับ จากตัวอย่างข้างบนจะเป็นการ insert ข้อมูลลงใน table User ถ้าเราต้องการจะ select ขึ้นมา
สามารถเขียนคำสั่งได้ประมาณนี้ครับ
$result = User::find()->where(['id' => 4])->one(); echo $result['name']." / ".$result['email'];
หวังว่าจะเป็นประโยชน์นะครับ ไว้เจอกันในบทความต่อไปครับ