เข้าไป Config กำหนดการเชื่อมต่อในไฟล์ .ENV หรือใน config/database.php
การเขียนคำสั่ง SQL โดยตรง สามารถเรียกใช้งานคำสั่งเหล่านี้ได้ select
, update
, insert
, delete
, และstatement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; class UserController extends Controller { /** * Show a list of all of the application's users. * * @return Response */ public function index() { $users = DB::select('select * from users where active = ?', [1]); return view('user.index', ['users' => $users]); } } |
ผลลัพธ์จะ return ออกมาเป็น array
1 2 3 |
foreach ($users as $user) { echo $user->name; } |
1 |
$results = DB::select('select * from users where id = :id', ['id' => 1]); |
1 |
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']); |
จะ return จำนวนแถวที่ถูกอัพเดท
1 |
$affected = DB::update('update users set votes = 100 where name = ?', ['John']); |
จะ return จำนวนแถวที่ถูกลบ
1 |
$deleted = DB::delete('delete from users'); |
1 |
DB::statement('drop table users'); |
สามารถดูคำสั่ง SQL เพื่อตรวจสอบความถูกต้องของคำสั่งได้ ซึ่งต้องลงทะเบียน query listener ใน service provider ก่อนครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php namespace App\Providers; use Illuminate\Support\Facades\DB; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { DB::listen(function ($query) { var_dump($query->sql); var_dump($query->bindings); var_dump($query->time); }); } /** * Register any application services. * * @return void */ public function register() { // } } |
ก็จะแสดงผลออกมาประมาณนี้ครับ
1 2 3 4 5 6 |
string 'select * from `users` where (`email` like ? or `first_name` like ? or `last_name` like ?)' (length=89) array (size=3) 0 => string '%john@example.org%' (length=18) 1 => string '%John%' (length=6) 2 => string '%Doe%' (length=5) float 35.63 |
หากดำเนินการ query ทั้งหมดไม่สำเร็จ ระบบจะ rolled back กลับ
1 2 3 4 5 |
DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }); |
สามารถใส่อาร์กิวเมนต์กำหนดจำนวนครั้งเพื่อเริ่ม transaction ใหม่ หากไม่สำเร็จอีกระบบก็จะ rolled back กลับ
1 2 3 4 5 |
DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }, 5); |
ที่มา
https://laravel.com/docs/5.4/database
ป้ายกำกับ:laravel