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

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

yii2-framework

yii2-framework

<h3>สอน Yii 2 &colon; ติดต่อฐานข้อมูล MySQL และ Insert ข้อมูล<&sol;h3>&NewLine;<p><&sol;br><br &sol;>&NewLine;การเชื่อมต่อฐานข้อมูลและการ Query ข้อมูลสำหรับ Yii Framework ค่อนข้างจะสะดวกสบายครับ เราสามารถสืบทอด<br &sol;>&NewLine;คุณสมบัติของคลาส ActiveRecord มาใช้งานได้ การสืบทอดคุณสมบัติคลาส ActiveRecord เป็นเสมือนการกำหนดให้<br &sol;>&NewLine;คลาสนั้นเป็น 1 table ในฐานข้อมูลและมีตัวแปรคือ column name ทั้งหมดใน table นั้น หลักการคล้าย ๆ กับการสร้าง<br &sol;>&NewLine;<&excl;--more--><&sol;p>&NewLine;<p>view และ controller ที่เมื่อสร้าง UserController ต้องมีโฟลเด้อชื่อว่า user ใน view<br &sol;>&NewLine;<&sol;br><br &sol;>&NewLine;ในบทความที่แล้ว <a href&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;สอน-yii-2-ใช้งาน-model-ร่วมกับ-view-และ-contro&sol;" target&equals;"&lowbar;blank">ใช้งาน Model ร่วมกับ View และ Controller<&sol;a> เราได้ทำความเข้าใจและใช้งานส่วนของ view&comma; controller และ model ในบทความนี้ จะใช้ไฟล์โปรเจคเดิมที่เราได้สร้างไว้ ซึ่งมีโครงสร้างดังนี้<&sol;p>&NewLine;<pre class&equals;"lang&colon;default highlight&colon;0 decode&colon;true " >models&sol;User&period;php &NewLine;views&sol;user&sol;index&period;php &NewLine;controllers&sol;UserController&period;php<&sol;pre>&NewLine;<h4>สร้างฐานข้อมูลและ User Table ตามชื่อ Model<&sol;h4>&NewLine;<ul>&NewLine;<li>1&period; ก่อนอื่นให้เราเข้าไปสร้างฐานข้อมูลโดยให้ตั้งชื่อว่า yii2basic<&sol;li>&NewLine;<p><&sol;br><br &sol;>&NewLine;<img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2016&sol;08&sol;Yii2-ติดต่อฐานข้อมูล-1&period;png" alt&equals;"Yii2-ติดต่อฐานข้อมูล" &sol;><br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;<li>2&period; จากนั้นให้สร้าง Table โดยให้กำหนด column name ต่าง ๆ ดังรูปด้านล่าง<&sol;li>&NewLine;<p><&sol;br><br &sol;>&NewLine;<img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2016&sol;08&sol;Yii2-ติดต่อฐานข้อมูล-2&period;png" alt&equals;"Yii2-ติดต่อฐานข้อมูล" &sol;><br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;<li>3&period; เปิดไฟล์ config&sol;db&period;php เปลี่ยนรายละเอียดการติดต่อฐานข้อมูลให้ตรงกับที่เราตั้งไว้<&sol;li>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"config&sol;db&period;php" >return &lbrack; &NewLine; 'class' &equals;&gt&semi; 'yii&bsol;db&bsol;Connection'&comma; &NewLine; 'dsn' &equals;&gt&semi; 'mysql&colon;host&equals;localhost&semi;dbname&equals;yii2basic'&comma; &NewLine; 'username' &equals;&gt&semi; 'root'&comma; &NewLine; 'password' &equals;&gt&semi; ''&comma; &NewLine; 'charset' &equals;&gt&semi; 'utf8'&comma; &NewLine;&rsqb;&semi;<&sol;pre>&NewLine;<p><&sol;br><&sol;p>&NewLine;<li>4&period; เสร็จแล้วให้เราไปแก้ไขไฟล์ models&sol;User&period;php โดยให้เปลี่ยนจาก extends Models เป็น ActiveRecord ดังนี้<&sol;li>&NewLine;<p><&sol;br><&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"models&sol;User&period;php"> &NewLine;namespace app&bsol;models&semi; &NewLine; &NewLine;use Yii&semi; &NewLine;use yii&bsol;db&bsol;ActiveRecord&semi; &NewLine;class User extends ActiveRecord &sol;&sol; เปลี่ยนมาใช้คุณสมบัติของ ActiveRecord คลาส &NewLine;&lbrace; &NewLine;&Tab;public static function tableName&lpar;&rpar; &NewLine; &lbrace; &NewLine; return 'User'&semi; &sol;&sol; เป็นการบอกว่าจะควบคุม table ไหนในฐานข้อมูล &NewLine; &rcub; &NewLine; &NewLine;&rcub;<&sol;pre>&NewLine;<&sol;ul>&NewLine;<h4>ทดสอบ Insert ข้อมูลเข้าไปในฐานข้อมูล<&sol;h4>&NewLine;<p>จากการที่เราได้สร้าง table ในฐานข้อมูลและทำการสืบทอดคุณสมบัติ ActiveRecord จะทำให้เราสามารถสั่ง insert<br &sol;>&NewLine;ข้อมูลลงไปใน User table ได้ด้วยคำสั่ง &dollar;User->save&lpar;&rpar; และสามารถกำหนด value ใน column ต่าง ๆ ได้ดังนี้<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"controllers&sol;UserController&period;php"> &NewLine;&dollar;User &equals; new User&lpar;&rpar;&semi; &NewLine;&dollar;User-&gt&semi;name &equals; "Witoon Pomipon"&semi; &NewLine;&dollar;User-&gt&semi;email &equals; "witoon&commat;codebee&period;co&period;th"&semi; &NewLine;&dollar;User-&gt&semi;save&lpar;&rpar;&semi;<&sol;pre>&NewLine;<p>ให้ทดสอบโดยการเปิดไฟล์ controllers&sol;UserController&period;php และแก้ไขโค๊ดในไฟล์เดิมเป็นตามโค๊ดด้านล่างครับ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"controllers&sol;UserController&period;php"> &NewLine;namespace app&bsol;controllers&semi; &NewLine; &NewLine;use Yii&semi; &NewLine;use yii&bsol;web&bsol;Controller&semi; &NewLine;use app&bsol;models&bsol;User&semi; &sol;&sol; เปิดการเข้าถึง User Model &NewLine; &NewLine;class UserController extends Controller &NewLine;&lbrace; &NewLine; public function actionIndex&lpar;&rpar; &NewLine; &lbrace; &NewLine;&Tab;&dollar;User &equals; new User&lpar;&rpar;&semi; &sol;&sol; ประกาศตัวแปร &dollar;User มีค่าเท่ากับ User Model &NewLine;&Tab;&dollar;User-&gt&semi;name &equals; "Witoon Pomipon"&semi; &NewLine;&Tab;&dollar;User-&gt&semi;email &equals; "witoon&commat;codebee&period;co&period;th"&semi; &NewLine;&Tab;&dollar;User-&gt&semi;save&lpar;&rpar;&semi; &NewLine; &NewLine; return &dollar;this-&gt&semi;render&lpar;'index'&comma; &lbrack; &sol;&sol; สั่ง render หน้า index view &NewLine; 'User' &equals;&gt&semi; &dollar;User&comma; &sol;&sol; พร้อมกับส่ง User Model ออกไปด้วย &NewLine; &rsqb;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<p>ส่วนใน views&sol;user&sol;index&period;php เราจะเขียนเพื่อแสดงผล name และ email ได้ดังนี้ครับ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"views&sol;user&sol;index&period;php"> &NewLine;&lt&semi;div class&equals;"site-about"&gt&semi; &NewLine; &lt&semi;p&gt&semi; &NewLine; Hi&comma; I am beginner in Yii นาจาา &lt&semi;&quest;php echo &dollar;User-&gt&semi;name&period;" &sol; "&period;&dollar;User-&gt&semi;email&semi; &quest;&gt&semi; &NewLine; &lt&semi;&sol;p&gt&semi; &NewLine;&lt&semi;&sol;div&gt&semi;<&sol;pre>&NewLine;<p>ถ้าลองรันตัวเว็บผ่านโปรแกรมเว็บเบราว์เซอร์ผลลัพธ์ที่ได้ คือ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default highlight&colon;0 decode&colon;true " title&equals;"views&sol;user&sol;index&period;php" > &NewLine;Hi&comma; I am beginner in Yii นาจาา Witoon Pomipon &sol; witoon&commat;codebee&period;co&period;th &NewLine;<&sol;pre>&NewLine;<p>ข้อมูล name และ email ที่เราระบุไว้ก็จะถูกบันทึกลงในฐานข้อมูล<br &sol;>&NewLine;<&sol;br><br &sol;>&NewLine;<img src&equals;"https&colon;&sol;&sol;www&period;codebee&period;co&period;th&sol;labs&sol;wp-content&sol;uploads&sol;2016&sol;08&sol;Yii2-ติดต่อฐานข้อมูล-3&period;png" alt&equals;"Yii2-ติดต่อฐานข้อมูล" &sol;><br &sol;>&NewLine;<&sol;br><br &sol;>&NewLine;เพิ่มเติมครับ จากตัวอย่างข้างบนจะเป็นการ insert ข้อมูลลงใน table User ถ้าเราต้องการจะ select ขึ้นมา<br &sol;>&NewLine;สามารถเขียนคำสั่งได้ประมาณนี้ครับ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&dollar;result &equals; User&colon;&colon;find&lpar;&rpar;-&gt&semi;where&lpar;&lbrack;'id' &equals;&gt&semi; 4&rsqb;&rpar;-&gt&semi;one&lpar;&rpar;&semi; &NewLine;echo &dollar;result&lbrack;'name'&rsqb;&period;" &sol; "&period;&dollar;result&lbrack;'email'&rsqb;&semi;<&sol;pre>&NewLine;<p>หวังว่าจะเป็นประโยชน์นะครับ ไว้เจอกันในบทความต่อไปครับ<br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;

Exit mobile version