การใช้งานฐานข้อมูลใน Laravel ผ่าน SQL (Raw Queries)
Laravel รองรับการใช้ Raw SQL Queries ผ่าน DB::select(), DB::insert(), DB::update(), DB::delete(), และ DB::statement().
📌 อย่าลืม import use Illuminate\Support\Facades\DB; ก่อนใช้งาน
1️⃣ SELECT – คำสั่งดึงข้อมูล
📌 ดึงข้อมูลทั้งหมด (SELECT * FROM users)
use Illuminate\Support\Facades\DB;
$users = DB::select("SELECT * FROM users");
foreach ($users as $user) {
echo $user->name . "<br>";
}
🔹 ผลลัพธ์เหมือน DB::table('users')->get();
📌 ดึงข้อมูลแบบมีเงื่อนไข (WHERE id = ?)
$user = DB::select("SELECT * FROM users WHERE id = ?", [1]);
if ($user) {
echo $user[0]->name;
}
💡 ใช้ ? เพื่อป้องกัน SQL Injection
2️⃣ INSERT – เพิ่มข้อมูล
📌 เพิ่มข้อมูลใหม่ (INSERT INTO users (name, email) VALUES (?, ?) )
DB::insert("INSERT INTO users (name, email, password) VALUES (?, ?, ?)", [
"John Doe", "john@example.com", bcrypt("password")
]);
echo "User added!";
🔹 เทียบเท่ากับ User::create([...])
3️⃣ UPDATE – อัปเดตข้อมูล
📌 อัปเดตชื่อ (UPDATE users SET name = ? WHERE id = ?)
DB::update("UPDATE users SET name = ? WHERE id = ?", ["John Updated", 1]);
echo "User updated!";
🔹 เทียบเท่ากับ User::where('id', 1)->update([...])
4️⃣ DELETE – ลบข้อมูล
📌 ลบข้อมูล (DELETE FROM users WHERE id = ?)
DB::delete("DELETE FROM users WHERE id = ?", [1]);
echo "User deleted!";
🔹 เทียบเท่ากับ User::where('id', 1)->delete();
5️⃣ EXECUTE – คำสั่งอื่นๆ เช่น ALTER TABLE
ใช้ DB::statement() สำหรับคำสั่งที่ไม่มีผลลัพธ์
DB::statement("ALTER TABLE users ADD COLUMN age INT(3) NOT NULL DEFAULT 0");
echo "Table altered!";
สรุป
| SQL คำสั่ง | Laravel Raw Query |
|---|---|
SELECT * FROM users | DB::select("SELECT * FROM users") |
INSERT INTO users (name, email) VALUES (?, ?) | DB::insert("INSERT INTO users (name, email) VALUES (?, ?)", [...]) |
UPDATE users SET name = ? WHERE id = ? | DB::update("UPDATE users SET name = ? WHERE id = ?", [...]) |
DELETE FROM users WHERE id = ? | DB::delete("DELETE FROM users WHERE id = ?", [...]) |
ALTER TABLE users ADD COLUMN age INT | DB::statement("ALTER TABLE users ADD COLUMN age INT") |
✅ เหมาะสำหรับการใช้ Query ตรงๆ แต่แนะนำให้ใช้ Eloquent ORM สำหรับการพัฒนาในระยะยาว 🚀
