Site icon บริษัท โค๊ดบี จำกัด

สอน Yii 2 : ติดต่อฐานข้อมูล MySQL และ Insert ข้อมูล

yii2-framework

yii2-framework

สอน 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

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2basic',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];

  • 4. เสร็จแล้วให้เราไปแก้ไขไฟล์ models/User.php โดยให้เปลี่ยนจาก extends Models เป็น ActiveRecord ดังนี้
  • 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 = "witoon@codebee.co.th";
    $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 = "witoon@codebee.co.th";
    	$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 / witoon@codebee.co.th
    

    ข้อมูล name และ email ที่เราระบุไว้ก็จะถูกบันทึกลงในฐานข้อมูล



    เพิ่มเติมครับ จากตัวอย่างข้างบนจะเป็นการ insert ข้อมูลลงใน table User ถ้าเราต้องการจะ select ขึ้นมา
    สามารถเขียนคำสั่งได้ประมาณนี้ครับ

    $result = User::find()->where(['id' => 4])->one();
    echo $result['name']." / ".$result['email'];

    หวังว่าจะเป็นประโยชน์นะครับ ไว้เจอกันในบทความต่อไปครับ

    Exit mobile version