การใช้งานฐานข้อมูลใน 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 สำหรับการพัฒนาในระยะยาว 🚀