Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 28: การใช้งาน Query Builder

Query Builder เป็นเครื่องมือที่ Laravel มีมาให้เพื่อช่วยให้เราสามารถสร้างคำสั่ง SQL สำหรับการดึง เพิ่ม แก้ไข และลบข้อมูลในฐานข้อมูลได้โดยไม่ต้องเขียน SQL โดยตรง ทำให้โค้ดอ่านง่ายและลดความซับซ้อนของการเขียน SQL

Query Builder ทำงานร่วมกับฐานข้อมูลหลายประเภท เช่น MySQL, PostgreSQL, SQLite และ SQL Server ซึ่งช่วยให้สามารถสร้างและจัดการข้อมูลในฐานข้อมูลได้อย่างมีประสิทธิภาพและรวดเร็ว

การใช้งาน Query Builder

Laravel Query Builder สามารถเข้าถึงได้ผ่าน Facade DB โดยใช้คำสั่ง DB::table() เพื่อระบุตารางที่ต้องการทำงานด้วย

1. การดึงข้อมูลด้วย Query Builder

เราสามารถใช้คำสั่ง get(), first(), และ find() เพื่อดึงข้อมูลจากฐานข้อมูลได้

  • ดึงข้อมูลทั้งหมดจากตาราง users:
use Illuminate\Support\Facades\DB;

$users = DB::table('users')->get();

  • ดึงข้อมูลแถวแรกจากตาราง users:
$user = DB::table('users')->first();

  • ดึงข้อมูลตาม Primary Key:
$user = DB::table('users')->find(1);

2. การใช้เงื่อนไขในการ Query

สามารถใช้ where() เพื่อกรองข้อมูลตามเงื่อนไขที่ต้องการ

  • ดึงข้อมูลผู้ใช้ที่มีอายุ 25 ปี:
$users = DB::table('users')->where('age', 25)->get();

  • ใช้หลายเงื่อนไขด้วย AND และ OR:
// ใช้ AND
$users = DB::table('users')
            ->where('age', '>', 20)
            ->where('status', 'active')
            ->get();

// ใช้ OR
$users = DB::table('users')
            ->where('age', '>', 20)
            ->orWhere('status', 'active')
            ->get();

3. การจัดเรียงและการจำกัดข้อมูล

สามารถใช้ orderBy() และ limit() เพื่อจัดเรียงและกำหนดจำนวนข้อมูลที่ต้องการดึงออกมา

  • จัดเรียงข้อมูลตามอายุจากน้อยไปมาก:
$users = DB::table('users')->orderBy('age', 'asc')->get();

  • ดึงข้อมูล 10 แถวแรก:
$users = DB::table('users')->limit(10)->get();

4. การนับและการทำ Aggregation

Query Builder มีคำสั่ง Aggregation เช่น count(), max(), min(), avg(), และ sum()

  • นับจำนวนผู้ใช้ทั้งหมดในตาราง users:
$userCount = DB::table('users')->count();

  • หาค่าเฉลี่ยของอายุผู้ใช้:
$averageAge = DB::table('users')->avg('age');

5. การเพิ่มข้อมูล

สามารถใช้ insert() เพื่อเพิ่มข้อมูลลงในฐานข้อมูล

DB::table('users')->insert([
    'name' => 'John Doe',
    'email' => '[email protected]',
    'age' => 30,
]);

6. การอัปเดตข้อมูล

ใช้ update() เพื่อแก้ไขข้อมูลในฐานข้อมูล

DB::table('users')
    ->where('id', 1)
    ->update(['name' => 'Jane Doe']);

7. การลบข้อมูล

ใช้ delete() เพื่อทำการลบข้อมูลจากฐานข้อมูล

DB::table('users')->where('id', 1)->delete();

การนำไปใช้งาน

Query Builder ใน Laravel ช่วยให้การทำงานกับฐานข้อมูลเป็นไปได้อย่างสะดวกและเป็นระบบ สามารถใช้ในการ Query ดึงข้อมูล เพิ่ม แก้ไข และลบข้อมูลได้อย่างง่ายดาย เหมาะสำหรับการทำงานกับข้อมูลที่ไม่ซับซ้อนมาก และลดโอกาสในการเกิดข้อผิดพลาดจากการเขียน SQL แบบดั้งเดิม