<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Story Coding</title>
    <description>The latest articles on DEV Community by Story Coding (@story_coding).</description>
    <link>https://dev.to/story_coding</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3268201%2F5cda677d-3460-45f3-bd9c-4b070c0bc951.jpg</url>
      <title>DEV Community: Story Coding</title>
      <link>https://dev.to/story_coding</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/story_coding"/>
    <language>en</language>
    <item>
      <title>Logika Absensi Barcode</title>
      <dc:creator>Story Coding</dc:creator>
      <pubDate>Wed, 18 Jun 2025 09:19:04 +0000</pubDate>
      <link>https://dev.to/story_coding/logika-absensi-barcode-b91</link>
      <guid>https://dev.to/story_coding/logika-absensi-barcode-b91</guid>
      <description>&lt;p&gt;1️⃣ Buat migrasi tabel jadwal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:migration create_jadwal_table

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu isi migrasinya seperti ini:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function up()
{
    Schema::create('jadwal', function (Blueprint $table) {
        $table-&amp;gt;id();
        $table-&amp;gt;boolean('libur')-&amp;gt;default(false);
        $table-&amp;gt;time('masuk_pagi_start');
        $table-&amp;gt;time('masuk_pagi_end');
        $table-&amp;gt;time('masuk_siang_start');
        $table-&amp;gt;time('masuk_siang_end');
        $table-&amp;gt;time('pulang_pagi_start');
        $table-&amp;gt;time('pulang_pagi_end');
        $table-&amp;gt;time('pulang_siang_start');
        $table-&amp;gt;time('pulang_siang_end');
        $table-&amp;gt;timestamps();
    });
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu jalankan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ Buat model Jadwal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:model Jadwal

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isi modelnya sederhana:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Jadwal extends Model
{
    use HasFactory;

    protected $table = 'jadwal';

    protected $fillable = [
        'libur',
        'masuk_pagi_start', 'masuk_pagi_end',
        'masuk_siang_start', 'masuk_siang_end',
        'pulang_pagi_start', 'pulang_pagi_end',
        'pulang_siang_start', 'pulang_siang_end',
    ];
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ Sesuaikan Controller scanBarcode()&lt;br&gt;
Sekarang kita ambil data jadwal dari database:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function scanBarcode(Request $request)
{
    // Cari data siswa berdasarkan barcode yang discan
    $student = Student::where('barcode', $request-&amp;gt;barcode)-&amp;gt;first();

    // Jika barcode tidak ditemukan, kembalikan status notfound
    if (!$student) {
        return response()-&amp;gt;json(['status' =&amp;gt; 'notfound']);
    }

    // Ambil waktu saat ini
    $now = Carbon::now();
    $today = $now-&amp;gt;toDateString();
    $time = $now-&amp;gt;format('H:i');

    // Ambil jadwal dari database
    $jadwal = Jadwal::first();

    // Jika jadwal tidak ditemukan, kembalikan error
    if (!$jadwal) {
        return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Jadwal belum diatur di database']);
    }

    // ================= CEK LIBUR =================
    if ($jadwal-&amp;gt;libur) {
        // Jika hari libur, langsung kembalikan status libur
        return response()-&amp;gt;json(['status' =&amp;gt; 'holiday', 'message' =&amp;gt; 'Hari ini libur']);
    }

    // ================= CEK JAM MASUK =================
    $isMasuk = (
        ($time &amp;gt;= $jadwal-&amp;gt;masuk_pagi_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;masuk_pagi_end) ||
        ($time &amp;gt;= $jadwal-&amp;gt;masuk_siang_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;masuk_siang_end)
    );

    // ================= CEK JAM PULANG =================
    $isPulang = (
        ($time &amp;gt;= $jadwal-&amp;gt;pulang_pagi_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;pulang_pagi_end) ||
        ($time &amp;gt;= $jadwal-&amp;gt;pulang_siang_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;pulang_siang_end)
    );

    // Cek apakah siswa sudah punya data absensi hari ini
    $absen = Absensi::where('student_id', $student-&amp;gt;id)
                    -&amp;gt;whereDate('created_at', $today)
                    -&amp;gt;first();

    // ================= PROSES ABSEN MASUK =================
    if ($isMasuk) {
        if ($absen) {
            return response()-&amp;gt;json(['status' =&amp;gt; 'already', 'message' =&amp;gt; 'Sudah absen masuk']);
        } else {
            Absensi::create([
                'student_id' =&amp;gt; $student-&amp;gt;id,
                'masuk' =&amp;gt; $now,
            ]);
            return response()-&amp;gt;json(['status' =&amp;gt; 'success', 'message' =&amp;gt; 'Absen masuk berhasil']);
        }
    }
    // ================= PROSES ABSEN PULANG =================
    elseif ($isPulang) {
        if ($absen) {
            if (!$absen-&amp;gt;pulang) {
                $absen-&amp;gt;update(['pulang' =&amp;gt; $now]);
                return response()-&amp;gt;json(['status' =&amp;gt; 'success', 'message' =&amp;gt; 'Absen pulang berhasil']);
            } else {
                return response()-&amp;gt;json(['status' =&amp;gt; 'already', 'message' =&amp;gt; 'Sudah absen pulang']);
            }
        } else {
            return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Belum absen masuk']);
        }
    }
    // ================= DILUAR JAM ABSEN =================
    else {
        return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Diluar jam absensi']);
    }
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Sekarang seluruh jam diambil dari tabel jadwal.&lt;br&gt;
✅ Lebih fleksibel, tinggal atur lewat database kapan saja.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>programming</category>
    </item>
    <item>
      <title>Tutorial Buat Absensi Barcode Laravel</title>
      <dc:creator>Story Coding</dc:creator>
      <pubDate>Tue, 17 Jun 2025 07:03:01 +0000</pubDate>
      <link>https://dev.to/story_coding/tutorial-buat-absensi-barcode-laravel-4g77</link>
      <guid>https://dev.to/story_coding/tutorial-buat-absensi-barcode-laravel-4g77</guid>
      <description>&lt;p&gt;Buat migrasi tabel jadwal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:migration create_jadwal_table

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu isi migrasinya seperti ini:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function up()
{
    Schema::create('jadwal', function (Blueprint $table) {
        $table-&amp;gt;id();
        $table-&amp;gt;time('masuk_pagi_start');
        $table-&amp;gt;time('masuk_pagi_end');
        $table-&amp;gt;time('masuk_siang_start');
        $table-&amp;gt;time('masuk_siang_end');
        $table-&amp;gt;time('pulang_pagi_start');
        $table-&amp;gt;time('pulang_pagi_end');
        $table-&amp;gt;time('pulang_siang_start');
        $table-&amp;gt;time('pulang_siang_end');
        $table-&amp;gt;timestamps();
    });
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu jalankan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Buat model Jadwal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:model Jadwal

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isi modelnya sederhana:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Jadwal extends Model
{
    use HasFactory;

    protected $table = 'jadwal';

    protected $fillable = [
        'masuk_pagi_start', 'masuk_pagi_end',
        'masuk_siang_start', 'masuk_siang_end',
        'pulang_pagi_start', 'pulang_pagi_end',
        'pulang_siang_start', 'pulang_siang_end',
    ];
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Sesuaikan &lt;code&gt;Controller scanBarcode()&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function scanBarcode(Request $request)
{
    // Cari data siswa berdasarkan barcode yang discan
    $student = Student::where('barcode', $request-&amp;gt;barcode)-&amp;gt;first();

    if (!$student) {
        return response()-&amp;gt;json(['status' =&amp;gt; 'notfound']);
    }

    $now = Carbon::now();
    $today = $now-&amp;gt;toDateString();
    $time = $now-&amp;gt;format('H:i');

    // Ambil jadwal dari database (asumsikan hanya ada 1 record jadwal, atau nanti bisa pakai filter)
    $jadwal = Jadwal::first();

    if (!$jadwal) {
        return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Jadwal belum diatur di database']);
    }

    // Cek apakah saat ini termasuk jam masuk
    $isMasuk = (
        ($time &amp;gt;= $jadwal-&amp;gt;masuk_pagi_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;masuk_pagi_end) ||
        ($time &amp;gt;= $jadwal-&amp;gt;masuk_siang_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;masuk_siang_end)
    );

    // Cek apakah saat ini termasuk jam pulang
    $isPulang = (
        ($time &amp;gt;= $jadwal-&amp;gt;pulang_pagi_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;pulang_pagi_end) ||
        ($time &amp;gt;= $jadwal-&amp;gt;pulang_siang_start &amp;amp;&amp;amp; $time &amp;lt;= $jadwal-&amp;gt;pulang_siang_end)
    );

    // Cek absensi hari ini
    $absen = Absensi::where('student_id', $student-&amp;gt;id)-&amp;gt;whereDate('created_at', $today)-&amp;gt;first();

    if ($isMasuk) {
        if ($absen) {
            return response()-&amp;gt;json(['status' =&amp;gt; 'already', 'message' =&amp;gt; 'Sudah absen masuk']);
        } else {
            Absensi::create([
                'student_id' =&amp;gt; $student-&amp;gt;id,
                'masuk' =&amp;gt; $now,
            ]);
            return response()-&amp;gt;json(['status' =&amp;gt; 'success', 'message' =&amp;gt; 'Absen masuk berhasil']);
        }
    } 
    elseif ($isPulang) {
        if ($absen) {
            if (!$absen-&amp;gt;pulang) {
                $absen-&amp;gt;update(['pulang' =&amp;gt; $now]);
                return response()-&amp;gt;json(['status' =&amp;gt; 'success', 'message' =&amp;gt; 'Absen pulang berhasil']);
            } else {
                return response()-&amp;gt;json(['status' =&amp;gt; 'already', 'message' =&amp;gt; 'Sudah absen pulang']);
            }
        } else {
            return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Belum absen masuk']);
        }
    }
    else {
        return response()-&amp;gt;json(['status' =&amp;gt; 'failed', 'message' =&amp;gt; 'Diluar jam absensi']);
    }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>Daftar lengkap perintah 'php artisan' Laravel beserta Penjelasan Singkat</title>
      <dc:creator>Story Coding</dc:creator>
      <pubDate>Mon, 16 Jun 2025 10:25:36 +0000</pubDate>
      <link>https://dev.to/story_coding/jenis-jenis-php-artisan-beserta-fungsi-2mg2</link>
      <guid>https://dev.to/story_coding/jenis-jenis-php-artisan-beserta-fungsi-2mg2</guid>
      <description>&lt;p&gt;Berikut ini adalah daftar lengkap perintah php artisan Laravel yang umum digunakan, beserta penjelasan singkatnya. Sudah bisa langsung copy-paste ke terminal kamu. 🧑‍💻&lt;/p&gt;

&lt;p&gt;🔧 Basic&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan list
# Menampilkan semua perintah artisan yang tersedia.

php artisan help &amp;lt;command&amp;gt;
# Menampilkan bantuan dan detail penggunaan untuk perintah tertentu.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🛠️ Build &amp;amp; Generate&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:controller NamaController
# Membuat controller baru.

php artisan make:model NamaModel
# Membuat model Eloquent baru.

php artisan make:migration create_nama_table
# Membuat file migrasi database.

php artisan make:seeder NamaSeeder
# Membuat file seeder untuk mengisi data dummy.

php artisan make:factory NamaFactory
# Membuat factory untuk generate data palsu (fake).

php artisan make:middleware NamaMiddleware
# Membuat middleware untuk filter request.

php artisan make:request NamaRequest
# Membuat form request class untuk validasi input.

php artisan make:command NamaCommand
# Membuat custom command artisan sendiri.

php artisan make:event NamaEvent
# Membuat event untuk sistem event-listener.

php artisan make:listener NamaListener
# Membuat listener untuk menangani event.

php artisan make:job NamaJob
# Membuat job untuk digunakan pada queue system.

php artisan make:mail NamaMail
# Membuat class mail untuk mengirim email.

php artisan make:notification NamaNotification
# Membuat notifikasi (bisa untuk email, database, dll).

php artisan make:policy NamaPolicy
# Membuat policy untuk otorisasi/akses.

php artisan make:provider NamaServiceProvider
# Membuat service provider baru.

php artisan make:resource NamaResource
# Membuat resource untuk format API response.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧩 Database&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate
# Menjalankan semua migrasi ke database.

php artisan migrate:rollback
# Mengembalikan migrasi terakhir yang dijalankan.

php artisan migrate:refresh
# Rollback dan migrasi ulang semua tabel.

php artisan migrate:fresh
# Menghapus semua tabel dan migrasi ulang dari awal.

php artisan db:seed
# Menjalankan semua seeder di folder DatabaseSeeder.

php artisan db:seed --class=NamaSeeder
# Menjalankan seeder tertentu saja.

php artisan db:wipe
# Menghapus semua tabel dan data database.

php artisan schema:dump
# Membuat dump struktur database ke file SQL.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧹 Cache &amp;amp; Config&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan config:cache
# Generate file cache dari konfigurasi (.env).

php artisan config:clear
# Menghapus cache konfigurasi.

php artisan route:cache
# Cache semua route ke satu file untuk performa.

php artisan route:clear
# Menghapus cache route.

php artisan view:cache
# Compile semua Blade view ke file cache.

php artisan view:clear
# Menghapus cache Blade view.

php artisan cache:clear
# Menghapus cache aplikasi Laravel.

php artisan optimize
# Mengoptimalkan performa aplikasi (gabungan cache route, config, dll).

php artisan optimize:clear
# Menghapus semua cache yang dioptimasi.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧪 Testing &amp;amp; Maintenance&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan down
# Mengaktifkan maintenance mode (aplikasi tidak bisa diakses oleh user).

php artisan up
# Keluar dari maintenance mode.

php artisan env
# Menampilkan environment aplikasi saat ini (local, production, dll).

php artisan key:generate
# Membuat app key dan menyimpannya ke .env (APP_KEY).

php artisan serve
# Menjalankan server lokal Laravel (http://127.0.0.1:8000).

php artisan tinker
# Console interaktif Laravel (untuk mencoba kode langsung).

php artisan schedule:run
# Menjalankan semua command yang dijadwalkan (biasanya lewat cron job).

php artisan queue:work
# Menjalankan worker untuk memproses queue (job background).

php artisan queue:listen
# Menjalankan listener untuk queue (real-time, tapi lebih berat).

php artisan queue:restart
# Me-restart queue worker setelah ada perubahan kode.

php artisan queue:failed
# Menampilkan semua job yang gagal di queue.

php artisan queue:retry all
# Menjalankan ulang semua job yang gagal.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>CARA PAKAI DATATABLES SERVER-SIDE DI LARAVEL</title>
      <dc:creator>Story Coding</dc:creator>
      <pubDate>Mon, 16 Jun 2025 10:05:43 +0000</pubDate>
      <link>https://dev.to/story_coding/cara-pakai-datatables-server-side-di-laravel-5d0i</link>
      <guid>https://dev.to/story_coding/cara-pakai-datatables-server-side-di-laravel-5d0i</guid>
      <description>&lt;p&gt;Berikut alurnya:&lt;/p&gt;

&lt;p&gt;1) Install Laravel DataTables (by Yajra)&lt;br&gt;
Jalankan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer require yajra/laravel-datatables-oracle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu publish config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan vendor:publish --tag=datatables
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Buat Route Khusus untuk AJAX DataTables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Http\Controllers\PostController;

Route::get('post/data', [PostController::class, 'getData'])-&amp;gt;name('post.data');
Route::resource('post', PostController::class);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Tambahkan Method getData() di PostController&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use Yajra\DataTables\Facades\DataTables;

public function getData(Request $request)
{
    $posts = Post::select(['id', 'judul', 'slug', 'created_at']);

    return DataTables::of($posts)
        -&amp;gt;addColumn('action', function ($post) {
            return '
                &amp;lt;a href="' . route('post.edit', $post) . '"&amp;gt;Edit&amp;lt;/a&amp;gt; |
                &amp;lt;a href="' . route('post.show', $post) . '"&amp;gt;Lihat&amp;lt;/a&amp;gt;
            ';
        })
        -&amp;gt;rawColumns(['action'])
        -&amp;gt;make(true);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) Update post/index.blade.php Pakai AJAX DataTables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@extends('layouts.app')

@section('content')
    &amp;lt;h1&amp;gt;Daftar Post&amp;lt;/h1&amp;gt;
    &amp;lt;a href="{{ route('post.create') }}"&amp;gt;Buat Post Baru&amp;lt;/a&amp;gt;

    &amp;lt;table id="post-table" class="display"&amp;gt;
        &amp;lt;thead&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Judul&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Slug&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Dibuat&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Aksi&amp;lt;/th&amp;gt;
            &amp;lt;/tr&amp;gt;
        &amp;lt;/thead&amp;gt;
    &amp;lt;/table&amp;gt;
@endsection

@section('scripts')
&amp;lt;script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
$(document).ready(function () {
    $('#post-table').DataTable({
       processing: true,
       serverSide: true,
       ajax: '{{ route('post.data') }}',
       lengthMenu: [10, 25, 50, 100], // &amp;lt;&amp;lt; ini penting
       pageLength: 10,
       columns: [
          { data: 'id', name: 'id' },
          { data: 'judul', name: 'judul' },
          { data: 'slug', name: 'slug' },
          { data: 'created_at', name: 'created_at' },
          { data: 'action', name: 'action', orderable: false, searchable: false },
       ]
    });

});
&amp;lt;/script&amp;gt;
@endsection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jangan lupa juga tambahkan &lt;code&gt;@yield(’scripts’)&lt;/code&gt; di layouts.app.blade.php sebelum &lt;code&gt;&amp;lt;/body&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@yield('scripts')
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>php</category>
      <category>flutter</category>
    </item>
    <item>
      <title>BUAT CRUD LARAVEL DENGAN CEPAT DAN LENGKAP</title>
      <dc:creator>Story Coding</dc:creator>
      <pubDate>Mon, 16 Jun 2025 08:49:58 +0000</pubDate>
      <link>https://dev.to/story_coding/buat-crud-laravel-dengan-cepat-dan-lengkap-5fh8</link>
      <guid>https://dev.to/story_coding/buat-crud-laravel-dengan-cepat-dan-lengkap-5fh8</guid>
      <description>&lt;p&gt;Berikut adalah langkah lengkap untuk membuat:&lt;/p&gt;

&lt;p&gt;✅ Model (Post)&lt;br&gt;
✅ Controller resource (PostController)&lt;br&gt;
✅ Migration (posts table)&lt;br&gt;
✅ View (index, create, edit, show)&lt;br&gt;
✅ Route (resource)&lt;/p&gt;

&lt;p&gt;1) Artisan: Buat &lt;code&gt;model&lt;/code&gt;, &lt;code&gt;controller&lt;/code&gt;, &lt;code&gt;migration&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan make:model Post -mcr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Penjelasan:&lt;/p&gt;

&lt;p&gt;Post = nama model&lt;br&gt;
-m = buat migration&lt;br&gt;
-c = buat controller&lt;br&gt;
-r = controller resource (CRUD lengkap)&lt;/p&gt;



&lt;p&gt;2) Buat view folder dan file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p resources/views/post
New-Item -Path resources/views/student/index.blade.php -ItemType File
New-Item -Path resources/views/student/create.blade.php -ItemType File
New-Item -Path resources/views/student/edit.blade.php -ItemType File
New-Item -Path resources/views/student/show.blade.php -ItemType File

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;3) Tambahkan route&lt;br&gt;
Di file &lt;code&gt;routes/web.php&lt;/code&gt;, tambahkan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Http\Controllers\PostController;

Route::resource('post', PostController::class);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;4) Contoh isi masing-masing file (biar langsung jalan)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;resources/views/post/index.blade.php&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@extends('layouts.app')

@section('content')
    &amp;lt;h1&amp;gt;Daftar Post&amp;lt;/h1&amp;gt;
    &amp;lt;a href="{{ route('post.create') }}"&amp;gt;Buat Post Baru&amp;lt;/a&amp;gt;
    &amp;lt;ul&amp;gt;
        @foreach($posts as $post)
            &amp;lt;li&amp;gt;{{ $post-&amp;gt;judul }} - &amp;lt;a href="{{ route('post.edit', $post) }}"&amp;gt;Edit&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
        @endforeach
    &amp;lt;/ul&amp;gt;
@endsection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;resources/views/post/create.blade.php&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@extends('layouts.app')

@section('content')
    &amp;lt;h1&amp;gt;Buat Post&amp;lt;/h1&amp;gt;
    &amp;lt;form action="{{ route('post.store') }}" method="POST"&amp;gt;
        @csrf
        &amp;lt;input type="text" name="judul" placeholder="Judul"&amp;gt;
        &amp;lt;button type="submit"&amp;gt;Simpan&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
@endsection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;resources/views/post/edit.blade.php&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@extends('layouts.app')

@section('content')
    &amp;lt;h1&amp;gt;Edit Post&amp;lt;/h1&amp;gt;
    &amp;lt;form action="{{ route('post.update', $post) }}" method="POST"&amp;gt;
        @csrf
        @method('PUT')
        &amp;lt;input type="text" name="judul" value="{{ $post-&amp;gt;judul }}"&amp;gt;
        &amp;lt;button type="submit"&amp;gt;Update&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
@endsection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;resources/views/post/show.blade.php&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@extends('layouts.app')

@section('content')
    &amp;lt;h1&amp;gt;{{ $post-&amp;gt;judul }}&amp;lt;/h1&amp;gt;
    &amp;lt;a href="{{ route('post.index') }}"&amp;gt;Kembali&amp;lt;/a&amp;gt;
@endsection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5) Contoh Migration (database/migrations/..._create_posts_table.php)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function up(): void
{
    Schema::create('posts', function (Blueprint $table) {
        $table-&amp;gt;id();
        $table-&amp;gt;string('judul');
        $table-&amp;gt;timestamps();
    });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lalu jalankan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;6) Contoh PostController Resource&lt;br&gt;
Di &lt;code&gt;app/Http/Controllers/PostController.php&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();
        return view('post.index', compact('posts'));
    }

    public function create()
    {
        return view('post.create');
    }

    public function store(Request $request)
    {
        $validated = $request-&amp;gt;validate([
            'judul' =&amp;gt; 'required|string|max:255',
        ]);
        Post::create($validated);
        return redirect()-&amp;gt;route('post.index');
    }

    public function show(Post $post)
    {
        return view('post.show', compact('post'));
    }

    public function edit(Post $post)
    {
        return view('post.edit', compact('post'));
    }

    public function update(Request $request, Post $post)
    {
        $validated = $request-&amp;gt;validate([
            'judul' =&amp;gt; 'required|string|max:255',
        ]);
        $post-&amp;gt;update($validated);
        return redirect()-&amp;gt;route('post.index');
    }

    public function destroy(Post $post)
    {
        $post-&amp;gt;delete();
        return redirect()-&amp;gt;route('post.index');
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>php</category>
      <category>flutter</category>
    </item>
  </channel>
</rss>
