Create dynamic data table component with Laravel and Vue JS . (Part 1)
Data tables are used widely in the web applications. Data tables allow the users to scan, analyze, compare, filter, sort, and manipulate information to derive insights and commit actions. In this tutorial we will learn to implement a simple data table component with Vue JS, Laravel and Bootstrap.
Requirements:
- Laravel 5.5+
- Vue JS
Let’s get started by creating a new Laravel Project
$ laravel new vue-datatable-laravel
Next we need to install the javascript dependencies:
$ npm install
Next, we need to prepare the database. Let’s create a database called laravel-vue-table
and make changes on the .env
files accordingly.
Next let’s make changes on the users’ table’s migration as will be using users table to display the contents in the table.
Run the migration using the command:php artisan migrate
which runs the migration for the project and new table users is created in our database.We need to prepare the data from the Laravel backend to feed to the data table.
We will create by adding a route. So inside the routes/web.php
we add a new route with get request:
$this->get('users/data-table', 'UsersController@getUsersForDataTable')->name('users.table');
We need to create a new controller, so the commandphp artisan make:controller UsersController
creates a new controller for us inside the app/Http/Controllers
directory.
We will be using Laravel resource to transfrom the data as per our need. So let’s create a new resource file using the following command:
php artisan make:resource UserResource
Great. We are going great.
Now lets move on to User model i.e.app/User.php
to make the following changes. Since we added a new field address to the users migration, we need to define that address field is also fillable. So our User model looks like this:
Now, before fetching all the users, we will prepare our Resource file:
For now, let’s fetch all the users and apply our UserResource to transform the data:
Next is we need to seed some data to the users table. Laravel out of the box ships with the UserFactorty file. We need to make some changes on the database/factories/UserFactory.php
file by adding new field address inside the array of the data that is being stored in database.
'address' => $faker->address,
Now we need to make seed file for Users table by using the following command: php artisan make:seed UsersTableSeeder.
Now we will seed the data by using the command:
php artisan db:seed --class=UsersTableSeeder
Now 50 new users have been added to our database.(The required number can be easily changed in the above seeder file.) So by visiting the url https://yourapp.dev/users/data-table
we get list of all the users.
Now we are ready with the backend. So let’s move on to the frontend.
We will create a new component DataTable.vue
inside the directory resources/js/components
Now we need to make changes on the resources/js/components/app.js
file. Here we will register the DataTable component
Now, we need to make changes on the welcome.blade.php file:
So by visiting the app base url https://myapp.dev or
http://localhost:8000 i get the following result:

Conclusion:
We just created a very simple dynamic data table component with vue js and Laravel. (We will be adding pagination, sorting and searching functionalities on the second part.)
Link to github repo for first part.