Bagaimana cara filter dari 3 database yang berbeda

ini gambar project saya :

pengguna harus memilih kecamatan lalu memilih kelurahan (dropdown dependent) kemudian submit, data yang di tampilkan berasal dari 3 data base yang berbeda :

Schema::create('tbl_kecamatan', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nama');
            $table->timestamps();
        });

        Schema::create('tbl_kelurahan', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('kecamatan_id');
            $table->string('nama');
            $table->timestamps();
        });

        Schema::create('tbl_penerima', function (Blueprint $table) {

            $table->increments('id');
            $table->integer('kecamatan_id');
            $table->integer('kelurahan_id');
            $table->string('nama');
            $table->string('alamat');
            $table->timestamps();

        });

saya masih sangat cupu di laravel, mohon bantuannya :D

avatar SUPERNOVA
@SUPERNOVA

1 Kontribusi 0 Poin

Diperbarui 7 tahun yang lalu

1 Jawaban:

pertama tama, saya share logic dulu nih bro.. semoga kita sudah sepaham :

1. Yang harus dilakukan adalah pada view : bikin 1 dropdown yang sudah ada isi nya, yaitu kecamatan (sebut saja dropdown ini punya id "kecamatan" juga)

<select id="kecamatan" name="kecamatan">
    @foreach($array_of_kecamatan AS $kecamatan)
        <option value="{{ $kecamatan->id }}">{{ $kecamatan->nama }}</option>
    @endforeach
</select>

2. Buat action onChange dari si #kecamatan menggunakan jquery (biar lebih gampang daripada pakai pure javascript)

<script>
$("#kecamatan").onChange(function(){
   var kecamatan_id = $(this).val();
   alert("ID terpilih : "+kecamatan_id);
});
</script>

3. Di function onChange si kecamatan, kirim request ajax (berisi ID kecamatan) ke salah satu controller dengan tujuan : - di return sama controller : list kelurahan berdasarkan kecamatan_id yang sama dengan yang kita kirim - return bisa berupa json, string (suka suka saja)

<script>
$("#kecamatan").onChange(function(){
   var kecamatan_id = $(this).val();
   //alert("ID terpilih : "+kecamatan_id);

   request = $.ajax({
     url: "/link_ke_routes",
     method: "POST",
     data: {
       _token : $('meta[name="csrf-token"]').attr('content'),
       kecamatan_id : kecamatan_id
     },
     dataType: "json",
     success: function (data) {
        var str_json = JSON.stringify(data);
        array_of_kelurahan = JSON.parse(str_json);
        $.each(arr_row_planner, function(array_of_kelurahan, kelurahan){
            $("#kelurahan").append("<option value='"+kelurahan['id']+"'>"+kelurahan['nama']+"</option>");
        });
     }
   });

   request.done(function( msg ) {
     alert('berhasil');
   });

   request.fail(function( jqXHR, textStatus ) {
      alert( "Request failed: " + textStatus );
   });
});
</script>

4. pada controller, tangkap request, lalu lakukan query si kelurahan dengan kecamatan_id sesuai yang dikirimkan via request (ini kira kira sendiri ya, mirip post biasa kok, cuma json nya di echo aja : echo json_decode($array_of_kelurahan_setelah_difilter_by_kecamatan);)

5. hasil return kita convert jadi perulangan, bisa pakai $.each(), Untuk mengisi 1 dropdown "kelurahan" yang mungkin sebelumnya masih kosong. dimana perulangan tersebut sudah berisi nama kelurahan berdasarkan kecamatan terpilih sebelumnya (code sudah gabung di poin 3)

-- ulangi poin 2 - 5 untuk mendapatkan 'penerima' berdasarkan 'kelurahan'

avatar porkrun
@porkrun

20 Kontribusi 17 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban