การจัดการฐานข้อมูลเบื้องต้น

<a name="configuration"></a> ## การตั้งค่า

เราจะไปตั้งค่าที่ app/config/database.php. ซึ่งเราจะไปตั้งค่าการเชื่อมต่อข้างในนี้ครับ

laravel ในขณะนี้สนับสนุน: MySQL, Postgres, SQLite, and SQL Server.

<a name="read-write-connections"></a> ## การกำหนดว่าจะให้ database ตัวไหนอ่านหรือเขียน

ในตัวอย่างนี้ เราจะทำการโหลดบาลานซ์ โดยแบ่งให้ database ตัวหนึ่งทำหน้าที่อ่านข้อมูล และอีกตัวหนึ่งทำหน้าที่เขียนข้อมูลอย่างเดียว

 1 'mysql' => array(
 2 	'read' => array(
 3 		'host' => '192.168.1.1',
 4 	),
 5 	'write' => array(
 6 		'host' => '196.168.1.2'
 7 	),
 8 	'driver'    => 'mysql',
 9 	'database'  => 'database',
10 	'username'  => 'root',
11 	'password'  => '',
12 	'charset'   => 'utf8',
13 	'collation' => 'utf8_unicode_ci',
14 	'prefix'    => '',
15 ),

<a name="running-queries"></a> ## การทำ Queries

เราใช้คลาส DB ในการเรียกใช้การคิวรี่นะครับ

ตัวอย่างการคิวรี่

1 $results = DB::select('select * from users where id = ?', array(1));

ฟังก์ชันselectจะส่งค่าเป็น arrayกลับมาเสมอ <br /><br /> ตัวอย่างการเพิ่มข้อมูล

1 DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));

ตัวอย่างการแก้ไขข้อมูล

1 DB::update('update users set votes = 100 where name = ?', array('John'));

ตัวอย่างการลบข้อมูล

1 DB::delete('delete from users');

หมายเหตุ: คำสั่ง update กับ delete จะคืนค่าเป็นจำนวนของแถวที่ได้ทำการจัดการไป.

ตัวอย่างการใช้คำสั่งทั่วไป

1 DB::statement('drop table users');

เราสามารถกำหนดให้ฟังก์ชันนี้ทำงานเมื่อมีการคิวรี่เกิดขึ้นโดยใช้ฟังก์ชัน DB::listen

ตัวอย่างการใช้งาน

1 DB::listen(function($sql, $bindings, $time)
2 {
3 	//
4 });

<a name="database-transactions"></a> ## Database Transactions

เมื่อเราจะทำการคิวรี้หลายๆ คำสั่งเราจะใช้ฟังก์ชัน transaction ในการควบคุม เหมือนในตัวอย่างข้างล่าง

1 DB::transaction(function()
2 {
3 	DB::table('users')->update(array('votes' => 1));
4 
5 	DB::table('posts')->delete();
6 });

<a name="accessing-connections"></a> ## การเข้าถึงการเชื่อมต่อฐานข้อมูล

สมมุติเว็บของเราใช้ฐานข้อมูลหลายชนิด สามารถใช้ฟังก์ชัน DB::connection ในการเรียกฐานข้อมูล เฉพาะที่เราต้องการดังตัวอย่าง

1 $users = DB::connection('foo')->select(...);

แล้วก็สามารถเชื่อมต่อใหม่ด้วยคำสั่ง reconnect

1 DB::reconnect('foo');

<a name="query-logging"></a> ## การเก็บประวัติการคิวรี่

โดยค่าเริ่มต้น laravel จะเก็บประวัติไว้ในหน่วยความจำอยู่เเล้ว ในกรณีที่เว็บของเรามีคำร้องขอจำนวนมาก การเก็บประวัติจะใช้หน่วยความจำมาก เราจะใช้ฟังก์ชัน disableQueryLog เพื่อทำการหยุดเก็บประวัติ ตัวอย่าง

1 DB::connection()->disableQueryLog();

การแสดง query log

หลายครั้ง เราอยากรู้ว่า laravel กำลังใช้รันคิวรี้ตัวไหน ในครั้งล่าสุด เราสามารถใช้งาน

1 $queries = DB::getQueryLog();

เพื่อเรียกดูได้