การใช้งานฐานข้อมูลใน 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 usersDB::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 INTDB::statement("ALTER TABLE users ADD COLUMN age INT")

เหมาะสำหรับการใช้ Query ตรงๆ แต่แนะนำให้ใช้ Eloquent ORM สำหรับการพัฒนาในระยะยาว 🚀

Leave a Reply

Your email address will not be published. Required fields are marked *