01/10/2018, 15:37

Bài 12: Laravel – Làm Việc Với Database

Kết Nối Tới Database Laravel đã tạo quá trình làm việc với DB rất dể dàng. Nó hiện hổ trợ 4 loại db như sau: MySQL Postgres SQLite SQL Server Chúng ta sẽ sử dụng hệ thống quản lý sinh viên để thực hành CRUD (Create, Read, Update, Delete). Cấu hình file database ...

Kết Nối Tới Database

Laravel đã tạo quá trình làm việc với DB rất dể dàng. Nó hiện hổ trợ 4 loại db như sau:

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

Chúng ta sẽ sử dụng hệ thống quản lý sinh viên để thực hành CRUD (Create, Read, Update, Delete).

Cấu hình file database trong config/database.php và tạo table student như sau:

Column Name Column Datatype Extra
Id int(11) Primary key | Auto increment
Name varchar(25)  

Insert Records

Chúng ta có thể insert record bằng cách sử dụng DB façade với phương thức insert.

Example

Step 1: Thực hiện lệnh sau để tạo controller StudInsertController

php artisan make:controller StudInsertController

 

Step 2: Copy code sau vào file controller vừa tạo

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use DB;

use AppHttpRequests;

class StudInsertController extends Controller

{

    //

    function insertForm(){

        return view(‘stud_create’);

    }

    function insert(Request $request){

        $name = $request->input(‘stud_name’);       

        DB::insert(‘insert into student(name) values(?)’,[$name]);

        echo “Record inserted successfully.<br/>”;

        echo ‘<a href=”/insert”>Click Here </a> to go back.’;

    }

}

Step 3: tạo file view gọi là stud_create.php với nội dung sau:

<html>

    <head>

      <title>Student Management | Add</title>

   </head>

      <body>

      <form action = “/create” method = “post”>

         <input type = “hidden” name = “_token” value = “<?php echo csrf_token(); ?>”>               <table>

            <tr>

               <td>Name</td>

               <td><input type=’text’ name=’stud_name’ /></td>

            </tr>

            <tr>

               <td colspan = ‘2’>

                  <input type = ‘submit’ value = “Add student”/>

               </td>

            </tr>

         </table>

      </form>

      </body>

</html>

Note: bạn có thấy dòng

<input type = “hidden” name = “_token” value = “<?php echo csrf_token(); ?>”>

Dòng này để làm gì? Với laravel nếu bạn muốn thực hiện 1 phương thức post vào hệ thống, thì phải đưa kèm 1 token để chứng thực, nếu không bạn sẽ bị đá văng request. Cũng có thể đưa csrf_token() trong thẻ meta trong html cũng được.

<meta name=”csrf-token” content=”{{ csrf_token() }}”>

Hoặc bỏ nó trong form đơn giản như sau:

<form method=”POST” action=”/profile”>

    {{ csrf_field() }}

    …

</form>

Step 4: thêm định tuyến

Route::get(‘insert’,’StudInsertController@insertform’);Route::post(‘create’,’StudInsertController@insert’);

Step 5: chạy http://localhost:8000/insert

Truy Vấn Dữ Liệu

Step 1: thực hiện tạo controller StudViewController

bai12_view

Step 2: Copy code sau vào file controller vừa tạo

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use DB;

use AppHttpRequests;

 class StudViewController extends Controller

{

   public function index(){

      $users = DB::select(‘select * from student’);

      return view(‘stud_view’,[‘users’=>$users]);

   }

}

Step 3: Tạo file view stud_view.blade.php với đoạn code sau:

<html>

      <head>

      <title>View Student Records</title>

   </head>

      <body>

      <table border = 1>

         <tr>

            <td>ID</td>

           <td>Name</td>

         </tr>

         @foreach ($users as $user)

         <tr>

            <td>{{ $user->id }}</td>

            <td>{{ $user->name }}</td>

         </tr>

         @endforeach

      </table>

      </body>

</html>

Step 4: định tuyến

Route::get(‘view-records’,’StudViewController@index’);

 

Step 5: chạy http://localhost:8000/view-records

 bai12_view_gui

Cập Nhật Dữ Liệu

Chúng ta có thể update record bằng cách sử dụng DB façade với phương thức update.

Step 1: tạo controller StudUpdateController.

php artisan make:controller StudUpdateController

Step 2: tạo các phương thức trong file controller vừa tạo như sau:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use DB;

use AppHttpRequests;

 class StudUpdateController extends Controller {

   public function index(){

      $users = DB::select(‘select * from student’);

      return view(‘stud_edit_view’,[‘users’=>$users]);

   }

   public function show($id) {

      $users = DB::select(‘select * from student where id = ?’,[$id]);

      return view(‘stud_update’,[‘users’=>$users]);

   }

   public function edit(Request $request,$id) {

      $name = $request->input(‘stud_name’);

      DB::update(‘update student set name = ? where id = ?’,[$name,$id]);

      echo “Record updated successfully.<br/>”;

      echo ‘<a href = “/edit-records”>Click Here</a> to go back.’;

   }

}

Step 3: tạo file view stud_edit_view.blade.php với nội dung sau:

<html>

   <head>

      <title>View Student Records</title>

   </head>

   <body>

      <table border = “1”>

         <tr>

            <td>ID</td>

            <td>Name</td>

            <td>Edit</td>

         </tr>

         @foreach ($users as $user)

         <tr>

            <td>{{ $user->id }}</td>

            <td>{{ $user->name }}</td>

            <td><a href = ‘edit/{{ $user->id }}’>Edit</a></td>

         </tr>

         @endforeach

      </table>

   </body>

</html>

Step 4: tạo một view khác stud_update.php với nội dung sau:

<html>

      <head>

      <title>Student Management | Edit</title>

   </head>

      <body>

      <form action = “/edit/<?php echo $users[0]->id; ?>” method = “post”>

         <input type = “hidden” name = “_token” value = “<?php echo csrf_token(); ?>”>               <table>

            <tr>

               <td>Name</td>

               <td>

                  <input type = ‘text’ name = ‘stud_name’ value = ‘<?php echo$users[0]->name; ?>’/>

               </td>

            </tr>

            <tr>

               <td colspan = ‘2’>

                  <input type = ‘submit’ value = “Update student” />

               </td>

            </tr>

         </table>

       </form>

      </body>

</html>

Step 5: thêm các định tuyến sau:

Route::get(‘edit-records’,’StudUpdateController@index’);Route::get(‘edit/{id}’,’StudUpdateController@show’);

Route::post(‘edit/{id}’,’StudUpdateController@edit’);

Step 6: chạy http://localhost:8000/edit-records

bai12_edit

Step 7: click vào link edit bất kỳ record và bạn sẽ được chuyển tới trang nơi bạn có thể edit record đó.

bai12_edit_record

bai12_edit_record_success

bai12_edit_show_view

Delete Records

Step 1: tạo controller StudDeleteController

php artisan make:controller StudDeleteController

 

Step 2: đưa vào file vừa tạo nội dung sau:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

use DB;

use AppHttpRequests;

class StudDeleteController extends Controller {

   public function index(){

      $users = DB::select(‘select * from student’);

      return view(‘stud_delete_view’,[‘users’=>$users]);

   }

   public function destroy($id) {

      DB::delete(‘delete from student where id = ?’,[$id]);

      echo “Record deleted successfully.<br/>”;

      echo ‘<a href=”/delete-records”>Click Here</a> to go back.’;

   }

}

Step 3: tạo file view stud_delete_view.blade.php

<html>

   <head>

      <title>View Student Records</title>

   </head>

   <body>

      <table border = “1”>

         <tr>

            <td>ID</td>

            <td>Name</td>

            <td>Edit</td>

         </tr>

         @foreach ($users as $user)

         <tr>

            <td>{{ $user->id }}</td>

            <td>{{ $user->name }}</td>

            <td><a href = ‘delete/{{ $user->id }}’>Delete</a></td>

         </tr>

         @endforeach

      </table>

   </body>

</html>

Step 4: định tuyến

Route::get(‘delete-records’,’StudDeleteController@index’);

Route::get(‘delete/{id}’,’StudDeleteController@destroy’);

Step 5: http://localhost:8000/delete-records

bai12_delete

Step 6: click link delete

bai12_delete_show

0