Insert Records Query Builder Laravel 8

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é

Bình luận