Trong bài trước chúng ta đã làm quen với Query Builder trong Laravel 8 rồi phải không nào, bài này chúng ta sẽ học cách sử dụng Query Builder Laravel 8 để Insert Records(chèn bản ghi) vào bảng các bạn nhé.
I. Tạo các view và controller cần thiết
1. Tạo view cho trang chèn dữ liệu
/resources/views/user/news_create.blade.php
Các bạn truy cập thư mục /resources/views/user / tạo file PHP news_create.blade.php với nội dung sau:
<form method="post" action="/user/news/store">
<input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
<p>
<label for="title">Name</label><br>
<input type="text" name="name" value="">
</p>
<p>
<label for="email">Email</label><br>
<input type="text" name="email" value="">
</p>
<p>
<label for="email">Password</label><br>
<input type="password" name="password" value="">
</p>
<p>
<button type="submit">Submit</button>
</p>
</form>
2. Tạo Resource Controller để điều khiển và xử lý truy vấn đến từ View
Ở đây mình sử dụng resource controller để các bài sau đỡ tạo mới Controller nha các bạn. 1 file Controller xử lý tất cả.
php artisan make:controller User_Controller --resource
Tạo thành công truy cập vào controler theo đường dẫn App\Http\Controllers\User_Controller.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class User_Controller extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }
3. Chỉnh sửa Controller để trả về trang chèn dữ liệu
Chúng ta tiến hành thêm nội dung cho function create() của Controller User_Controller để gọi trang view insert:
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('/user/news_create');
}
Nội dung trên chỉ đơn giản là gọi trang view /user/news_create
3. Khai báo Route
Ta thêm vào Route /routes/web.php nội dung sau:
use App\Http\Controllers\User_Controller;
Route::get('/user/news/create',[User_Controller ::class,'create']);
4. Hiển thị trang view insert:
Bây giờ chúng ta thử gõ đường dẫn http://localhost:8000/user/news/create lên trình duyệt, ta sẽ xem được nội dung sau:
II.Tiến hành insert dữ liệu
Trong view: insert dữ liệu /resources/views/user/news_create.blade.php ta cho form khi nhấn submit sẽ thực hiện một action tới /user/news/store, do đó ta cần tạo một Controller để xử lý lưu dữ liệu nhập, và một Route điều hướng tới Controller này, ta thực hiện như sau:
Điều chỉnh nội dung Route
Ta thêm vào Route /routes/web.php nội dung sau:
use App\Http\Controllers\User_Controller; Route::get('/user/news/create',[User_Controller::class,'create']); Route::post('/user/news/store',[User_Controller::class, 'store']);
Xử lý Controller
Tiến hành xử lý nội dung insert dữ liệu cho Controller, viết lại Controller /app/Http/Controllers/User_Control.php tại phần khai báo và public function store(Request $request) như sau:
Đừng quên khai báo đầu file
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Redirect;
*************************************
public function store(Request $request)
{
$name = $request->input('name');
$email= $request->input('email');
$password=$request->input('password');
DB::table('users')->insert([
'name' => $name,
'email' => $email,
'password' => $password,
]);
action([User_Controller::class, 'create']);
return Redirect::action([User_Controller::class, 'create']);
}
Vậy là xong chúng ta đã tạo xong trang insert dữ liệu trong Laravel rồi đấy. Các bạn vào trang
http://localhost:8000/user/news/create và thực hiện chèn dữ liệu vào.
Kiểm tra lại DB chúng ta thấy các user mới đã được thêm vào.
III. Lời kết:
Trên đây là 1 ví dụ sử dụng Insert Records Query Builder Laravel 8 để chèn dữ liệu vào bảng. Hẹn gặp các bạn trong bài tới nhé