ahmadajah03 Sat Feb 2021 1 year ago

Tutorial Laravel 8 Datatables dengan Relationship

Laravel 8 dataTables dengan tutorial contoh relasi. Dalam tutorial ini, kami akan menunjukkan kepada Anda cara menampilkan dan memfilter kolom di tabel data yajra dengan relasi di aplikasi laravel 8.

Terkadang, Anda memiliki lebih dari dua tabel yang bergabung dan menginginkan data kolom filter dengan tabel terpisah di aplikasi laravel 8.

Misalnya, Anda memiliki 2 tabel yang pertama adalah posting dan yang kedua adalah pengguna dan Anda membuat hubungan untuk setiap tabel. Kemudian Anda ingin menampilkan dan memfilter judul posting dan siapa yang menulis posting tersebut (nama penulis). Pada saat itu Anda perlu menggunakan kolom laravel yajra dataTables dengan relasi.

Laravel 8 Contoh DataTables dengan Relasi

Langkah 1 - Instal Aplikasi Laravel 8

Pertama-tama, buka terminal Anda dan jalankan perintah berikut untuk memasang atau mengunduh atau memasang aplikasi laravel 8:

composer create-project --prefer-dist laravel/laravel blog

Langkah 2 - Menghubungkan Aplikasi ke database

Setelah itu, buka file ".env" dan perbarui nama database, nama pengguna dan kata sandi di file env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Enter_Your_Database_Name
DB_USERNAME=Enter_Your_Database_Username
DB_PASSWORD=Enter_Your_Database_Password

Langkah 3 – Install Yajra DataTable

Pada langkah ini, jalankan perintah berikut di terminal untuk menginstal yajra datatable melalui paket komposer, jadi buka terminal Anda dan jalankan perintah berikut:

composer require yajra/laravel-datatables-oracle

Setelah itu, Anda perlu mengatur provider dan alias.

config/app.php

.....
'providers' => [
    ....
    Yajra\DataTables\DataTablesServiceProvider::class,
]
'aliases' => [
    ....
    'DataTables' => Yajra\DataTables\Facades\DataTables::class,
]
.....

Langkah 4 - Buat Migrasi dan Modal

Pada langkah ini, jalankan perintah berikut di terminal untuk membuat migrasi tabel pos dan membuat Post Modal:

php artisan nake:modal Post -m

database/migrations/2020_05_20_070104_create_posts_table.php

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id');
            $table->string('title');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Sekarang jalankan perintah berikut

php artisan migrate

Setelah Anda harus memperbarui kode berikut di file model Post Anda untuk membuat tabel posting.

Selanjutnya buka model Post.php, yang ditempatkan di dalam direktori App/models dan buat hubungan dalam model ini:

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\User;
 
class Post extends Model
{
    use HasFactory;
     
    protected $fillable = ['title'];
 
    public function users()
    {
        return $this->belongsTo(User::class,'user_id','id');
    }
}

Langkah 5 - Tambahkan route

Selanjutnya, buka file "routes/web.php" Anda dan tambahkan route berikut:

use App\Http\Controllers\PostController;

Route::get('posts', [PostController::class, 'index'])->name('posts.index');

Langkah 6 - Buat Controller dengan Artisan Command

Pada langkah ini, buka terminal Anda, jalankan perintah berikut untuk membuat file PostController.php:

php artisan make:controller PostController

Perintah ini akan membuat PostController dengan perintah artisan.

Selanjutnya, buka app/http/controller/PostController.php. dan perbarui metode berikut ke dalam file controller Anda:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Post;
use DataTables;
class PostController extends Controller
{
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index(Request $request)
    {
        if ($request->ajax()) {
            $model = Post::with('users');
                return DataTables::eloquent($model)
                ->addColumn('users', function (Post $post) {
                    return $post->users->name;
                })
                ->toJson();
        }
        return view('users');
    }
}

Langkah 7 - Buat File Blade

Pada langkah ini, Kunjungi direktori resources/views dan buat file baru users.blade.php.

Setelah itu, perbarui kode html dan javascript berikut ke dalam file view blade Anda:

<!DOCTYPE html>
<html>
<head>
<title>Laravel 8 Datatables with Relationship Tutorial - Medikre.com</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<style type="text/css">
.paginate_button{
padding: 0px !important;
}
</style>
</head>
<body>
<div class="container" style="margin-top: 100px;margin-bottom: 100px; ">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header bg-info text-white">Laravel Datatables with Relationship Tutorial - Medikre.com</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<table class="table table-bordered data-table">
<thead>
<tr>
<th>No</th>
<th>Title</th>
<th>Auther</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('.data-table').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('posts.index') }}",
columns: [
{data: 'id', name: 'id'},
{data: 'title', name: 'title'},
{data: 'users', name: 'users.name'},
]
});
});
</script>
</body>
</html>

Langkah 8 - Jalankan Server Pengembangan

Pada langkah ini, Jalankan perintah php artisan serve di terminal untuk memulai server secara lokal:

php artisan serve

Kemudian buka browser Anda dan tekan url berikut di atasnya:

http://127.0.0.1:8000/posts

Kesimpulan

Laravel 8 datatables dengan contoh reletionship, Anda telah belajar bagaimana menggunakan hubungan pada dataTables dan juga bagaimana kolom filter datatables pada suatu hubungan.

laravel 8 laravel laravel datatable