Laravel 10/9 Vue js datatables example; Through this tutorial, i am going to show you how install and use vuejs-datatable package for displaying lists of data in laravel vue js apps.
Laravel 10/9 Vue JS Datatables Example
Use the below given steps to integrate and use vue js dataTable in laravel vue js apps:
- Step 1: Install Laravel 10/9 App
- Step 2: Connecting App to Database
- Step 3: Create Model And Migration
- Step 4: NPM Configuration
- Step 5: Add Routes
- Step 6: Create Controller By Command
- Step 7: Create Vue Component
- Step 8: Create Blade Views And Initialize Vue Components
- Step 9: Run Development Server
Step 1: Install Laravel 10/9 App
Run the following command on command prompt to install laravel app:
composer create-project --prefer-dist laravel/laravel blog
Step 2: Connecting App to Database
Visit to your project root directory and open .env file. Then set up database credential in .env file as follow:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=here your database name here DB_USERNAME=here database username here DB_PASSWORD=here database password here
Step 3: Create Model And Migration
Run the following command on command prompt to create model and migration:
php artisan make:model Post -fm
This command will create one model name post.php and also create one migration file for the posts table.
Now open create_posts_table.php migration file from database>migrations and replace up() function with following code:
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('title'); $table->string('slug'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }
Next, migrate the table using the below command:
php artisan migrate
Visit to app/Models/Post.php and update the following code into your Post.php model as follow:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Post extends Model { use HasFactory; protected $guarded = []; }
Next, Navigate to database/factories and open PostFactory.php. Then update the following code into it as follow:
/** @var \Illuminate\Database\Eloquent\Factory $factory */ use App\Models\Post; use Faker\Generator as Faker; $factory->define(Post::class, function (Faker $faker) { return [ 'title' => $faker->sentence, 'slug' => \Str::slug($faker->sentence) ]; });
and then execute the following commad on terminal to generate fake data using faker as follow:
php artisan tinker //and then factory(\App\Models\Post::class,100)->create() exit
Step 4: NPM Configuration
Run the following command on command prompt to install Vue dependencies using NPM:
php artisan preset vue
Install all Vue dependencies:
npm install
Install vuejs-datatable:
npm install vuejs-datatable
Step 5: Add Routes
Visit to routes folder and open web.php file and add the following routes into your file:
use App\Http\Controllers\PostController; Route::get('posts', [PostController::class, 'index']);
Step 6: Create Controller By Command
Run the following command on command prompt to create a controller by an artisan:
php artisan make:controller PostController
Visit to app\Http\Controllers
and open PostController.php file. Then update the following code into your PostController.php file:
<?php namespace App\Http\Controllers; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function index(Request $request) { $posts = Post::get(); return response()->json($posts); } }
Step 7: Create Vue Component
Visit to resources/assets/js/components
folder and create a file called DataTableComponent.vue.
Now, update the following code into your DataTableComponent.vue components file:
<template> <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Laravel Vue Datatables Component Example - laratutorials.com</div> <div class="card-body"> <datatable :columns="columns" :data="rows"></datatable> <datatable-pager v-model="page" type="abbreviated" :per-page="per_page"></datatable-pager> </div> </div> </div> </div> </div> </template> <script> import DatatableFactory from 'vuejs-datatable'; export default { components: { DatatableFactory }, mounted() { console.log('Component mounted.') }, data(){ return { columns: [ {label: 'id', field: 'id'}, {label: 'Title', field: 'title'}, {label: 'Slug', field: 'slug'} ], rows: [], page: 1, per_page: 10, } }, methods:{ getPosts: function() { axios.get('/posts').then(function(response){ this.rows = response.data; }.bind(this)); } }, created: function(){ this.getPosts() } } </script>
Now open resources/assets/js/app.js
and include the DataTableComponent.vue component as follow:
require('./bootstrap'); window.Vue = require('vue'); Vue.component('datatable-component', require('./components/DataTableComponent.vue').default); const app = new Vue({ el: '#app', });
Step 8: Create Blade Views And Initialize Vue Components
Visit to resources/views and create one folder named layouts. Inside this folder create one blade view file named app.blade.php file.
Visit to resources/views/layouts and open app.blade.php file. Then update the following code into your app.blade.php file as follow:
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="csrf-token" content="{{ csrf_token() }}"> <title>Laravel 10/9 Vue JS DataTable Example Tutorial - laratutorials.com</title> <script src="{{ asset('js/app.js') }}" defer></script> <link href="{{ asset('css/app.css') }}" rel="stylesheet"> @stack('fontawesome') </head> <body> <div id="app"> <main class="py-4"> @yield('content') </main> </div> </body> </html>
Visit to resources/views/ and open welocome.blade.php. Then update the following code into your welcome.blade.php file as follow:
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Laravel Vue Js DataTable Example</div> <div class="card-body"> <datatable-component></datatable-component> </div> </div> </div> </div> </div> @endsection
Step 9: Run Development Server
Run the following command on command prompt to start development server:
npm run dev or npm run watch
Conclusion
In this tutorial, you have learned how to use vue js dataTable package in laravel vue js apps.