dapodik-org/dapodik-laravel-eloquent 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dapodik-org/dapodik-laravel-eloquent

Composer 安装命令:

composer require dapodik-org/dapodik-laravel-eloquent

包简介

Dapodik Eloquent for Laravel Framework

README 文档

README

BACA SAJA — File ini dikelola dari repositori utama dapodik-org/dapodik-laravel. Jangan edit langsung di sini.

Dapodik Eloquent Laravel

Latest Version on Packagist Laravel GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Model Eloquent Dapodik untuk Laravel.
Paket ini menyediakan model, migrasi, dan command untuk menerbitkan model Dapodik langsung ke aplikasi Laravel Anda.

Persyaratan

  • PHP >=8.1
  • Laravel 9 – 13
  • Aplikasi Dapodik sudah terinstal dan database sudah tersedia

Instalasi

composer require dapodik-org/dapodik-laravel-eloquent

Dukungan database

Driver Status
MySQL ✅ Didukung
MariaDB ✅ Didukung
PostgreSQL ✅ Didukung
SQL Server ✅ Didukung
SQLite ✅ Didukung

Publikasi migrasi

php artisan vendor:publish --tag="dapodik-eloquent-migrations"
php artisan migrate

Publikasi konfigurasi

php artisan vendor:publish --tag="dapodik-eloquent-config"

Publikasi model

Publikasikan seluruh model ke aplikasi Anda:

php artisan dapodik:eloquent-publish

Untuk satu model saja, gunakan key model seperti agama:

php artisan dapodik:eloquent-publish agama

Perintah ini menyalin folder Models dari package ke app/Models/Dapodik dan mengubah namespace menjadi App\Models\Dapodik\....

Pembuatan database

Buat database Dapodik jika belum ada:

php artisan dapodik:eloquent-db-create

Perintah ini membaca konfigurasi koneksi dari DAPODIK_ELOQUENT_CONNECTION (atau koneksi default) dan membuat database bila belum tersedia.

Driver Perilaku
MySQL / MariaDB CREATE DATABASE IF NOT EXISTS
PostgreSQL Cek pg_database lalu CREATE DATABASE
SQLite Touch file database
SQL Server Cek sys.databases lalu CREATE DATABASE

Gunakan opsi --connection untuk koneksi tertentu:

php artisan dapodik:eloquent-db-create --connection=dapodik

Gunakan opsi --database untuk menentukan nama database:

php artisan dapodik:eloquent-db-create --database=dapodik_ref

Koneksi terpisah (split connection)

Saat split_connection diaktifkan, perintah ini otomatis membuat database/schema untuk setiap subdirektori model:

Subdirektori MySQL / MariaDB / SQL Server PostgreSQL SQLite
ref {database}_ref Schema ref {base}_ref.sqlite
public {database}_public Schema public {base}_public.sqlite
man_akses {database}_man_akses Schema man_akses {base}_man_akses.sqlite
pustaka {database}_pustaka Schema pustaka {base}_pustaka.sqlite
nilai {database}_nilai Schema nilai {base}_nilai.sqlite
audit {database}_audit Schema audit {base}_audit.sqlite
blob {database}_blob Schema blob {base}_blob.sqlite

Konfigurasi

return [
    /*
     * Prefix tabel.
     */
    'prefix' => env('DAPODIK_ELOQUENT_PREFIX', 'dapodik'),

    /*
     * Suffix tabel.
     */
    'suffix' => env('DAPODIK_ELOQUENT_SUFFIX', null),

    /*
     * Nama koneksi database Laravel (dari config/database.php).
     * Biarkan null untuk menggunakan koneksi default.
     */
    'connection' => env('DAPODIK_ELOQUENT_CONNECTION', null),

    /*
     * Aktifkan split connection per subdirektori model.
     * Jika true, setiap subdirektori (ref, public, man_akses, dll.)
     * akan menggunakan koneksi terpisah: {connection}_{folder}.
     */
    'split_connection' => env('DAPODIK_ELOQUENT_SPLIT_CONNECTION', false),

    /*
     * Lewati drop tabel saat migrate:fresh.
     * Jika true, tabel dapodik tidak akan dihapus
     * saat php artisan migrate:fresh.
     */
    'skip_fresh' => env('DAPODIK_ELOQUENT_SKIP_FRESH', false),

    /*
     * Exclude tabel dari migration.
     * Lihat penjelasan di bawah untuk detailnya.
     */
    'exclude_tables' => [],
];

Pengecualian tabel

Gunakan exclude_tables untuk mencegah tabel tertentu dibuat saat migrasi awal. File migration create yang sesuai akan dihapus permanen dari filesystem sebelum migrasi dijalankan.

Catatan: Hanya berlaku untuk migration di folder database/migrations/dapodik/.

Pencocokan dilakukan terhadap:

  • Nama file migration (tanpa timestamp): create_dapodik_sync_log_table
  • Key tabel (snake_case) dari mapping internal: sync_log
  • FQCN model class: \Dapodik\Laravel\Eloquent\Models\SyncLog::class

Regex diapit / dan dicocokkan terhadap ketiga target di atas.

'exclude_tables' => [
    'create_dapodik_sync_log_table',            // nama file migration
    'sync_primer',                              // key tabel
    \Dapodik\Laravel\Eloquent\Models\SyncLog::class,
    '/^create_dapodik_sync_.+$/',               // regex nama file
    '/^create_dapodik_vld_.+$/',                // regex nama file
    '/^log_/',                                  // regex key tabel diawali log_
    '/_log_/',                                  // regex key tabel mengandung _log_
],

Jika tabel sudah pernah di-exclude lalu ingin dikembalikan:

php artisan vendor:publish --tag=dapodik-eloquent-migrations --force

Skip fresh

Saat skip_fresh diaktifkan (true), tabel dapodik tidak akan dihapus saat php artisan migrate:fresh. Berguna menjaga data Dapodik tetap aman sementara tabel lain di-reset.

'skip_fresh' => env('DAPODIK_ELOQUENT_SKIP_FRESH', false),

Atur lewat .env:

DAPODIK_ELOQUENT_SKIP_FRESH=true

Koneksi terpisah (split connection)

Saat split_connection diaktifkan, setiap subdirektori model menggunakan koneksi database terpisah:

Subdirektori Nama koneksi (jika connection = dapodik)
ref dapodik_ref
public dapodik_public
man_akses dapodik_man_akses
pustaka dapodik_pustaka
nilai dapodik_nilai
audit dapodik_audit
blob dapodik_blob

Suffix database (MySQL, MariaDB, SQL Server):

dapodik_ref, dapodik_public, ...

Search path (PostgreSQL):

ref, public, man_akses, ...

File database terpisah (SQLite):

database/dapodik_ref.sqlite, database/dapodik_public.sqlite, ...

Pengujian

composer test:eloquent

Kontribusi

Lihat CONTRIBUTING.md untuk detail.

Keamanan

Laporkan celah keamanan melalui kebijakan keamanan.

Kredit

Lisensi

MIT License. Lihat LICENSE untuk detail.

Peringatan

Dengan menggunakan library ini, data individu setiap entitas Dapodik akan dikirim ke pihak ketiga sesuai konfigurasi yang Anda atur. Penyalahgunaan data diancam dengan UU Perlindungan Data Pribadi No 27 Tahun 2022 Pasal 67.

Pastikan Anda memahami dan menyetujui risiko sebelum menggunakan library ini.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-13

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固