การจัดการฐานข้อมูลเบื้องต้น
<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();
เพื่อเรียกดูได้