Postingan lainnya
tidak bisa tampil data jquery - laravel
bang saya mau menampilkan data kabupaten di form hasil yaitu ketika di klik instansi muncul instansi yg dipilih masuk dalam kabupaten mana, untuk instansi itu sendiri terdapat field : id, nama instansi, province_id, regency_id, telepon. Sedangkan regency terdiri dari field : id, province_id, name , kemudian untuk table result terdiri dari : id, instance_id, hasil, catatan.
untuk tampilanya form result seperti ini ,
bagian view seperti ini :
<div class="form-group row {{ $errors->has('instansi') ? 'was-validated' :'' }}">
{!! Form::label('instansi', 'Instansi',['class'=>'col-sm-4 com-form-label']) !!}
<div class="col-sm-6">
{!! Form::select('instance_id', ['' => '-Pilih-']+$instance->toArray(), null, ['class' => 'form-control', 'id' => 'instance']) !!}
@if ($errors->has('instance_id'))
<span class="help-block">{{ $errors->first('instanse_id') }}</span>
@endif
</div>
</div>
<div class="form-group row {{ $errors->has('regency_id') ? 'was-validated' :'' }}">
{!! Form::label('regency_id', 'Kabupaten',['class'=>'col-sm-4 com-form-label']) !!}
<div class="col-sm-6">
{!! Form::text('kabupaten',null,['class'=>'form-control','placeholder'=>' ','id'=>'regency']) !!}
@if ($errors->has('regency_id'))
<span class="help-block">{{ $errors->first('regency_id') }}</span>
@endif
</div>
</div>
@section('script')
<script>
$('#tanggalberangkat').datetimepicker({
format: 'yyyy-mm-dd hh:ii:ss'
});
$('#tanggalpulang').datetimepicker({
format:'yyyy-mm-dd hh:ii:ss'
});
// set kabupaten
var url = {
regency : "{{ url('admin/regency') }}",
};
$('#instance').on('change', function () {
getRegency($(this).val());
});
function getRegency(instance_id) {
$.get(url.regency+"/"+ instance_id, function (data) {
$("#regency").html(data);
});
}
</script>
untuk route seperti ini
Route::get('regency/{instance}','InstanceController@regency');
, untuk instance controller seperti ini :
public function regency($regency)
{
// $items = Regency::where('name', $instance)->orderBy('id')->pluck('name', 'id');
// $items = Regency::where('instance_id', $instance)->orderBy('id')->pluck('name', 'id');
$items = Instance::with('regency')
->where('regency_id', $regency)->orderBy('id')->pluck('nama', 'id');
dd($items); die();
$list = '';
foreach ($items as $key => $value) {
$list .= "<option value='" . $key . "'>" . $value . "</option>";
}
// dd($items); die();
return $list;
}
untuk function regency pada resultController seperti berikut :
public function regency(Request $request, $instance)
{
$items = Regency::where('name', $instance)->orderBy('id')->pluck('name', 'id');
// $items = Regency::where('regency_id', $instance)->orderBy('id')->pluck('regency_id', 'id');
dd($items); die();
$list = '';
foreach ($items as $key => $value) {
$list .= "<option value='" . $key . "'>" . $value . "</option>";
}
return $list;
}
lalu ketika di run tidak muncul nama kabupatennya seperti tampilan gambar diatas, jika dibuka yang url regency data masih kosong
,
untuk model instansi seperti ini :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Instance extends Model
{
protected $guarded = [];
public $timestamps = false;
public function result()
{
return $this->hasMany('App\Result');
}
public function regency()
{
return $this->belongsTo('App\Regency','regency_id');
// return $this->belongsTo('App\Regency','id');
}
}
, untuk regency modelnya seperti ini :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Regency extends Model
{
protected $guarded = [];
public $timestamps = false;
public function instance()
{
return $this->hasMany('App\Instance');
}
}
mohon pencerahannya bang ?
Tanggapan
coba perlihatkan, struktur database Instance seperti apa, regency seperti apa
Yang $instance->toArray() ini pluck id dan nama nya instance bukan? Tapi yang dicari kok regency_id.
ada kesalahan dalam pertanyaan bang, sudah saya benahi sekarang bang @hilmanrdn dan @devio . gmna ya bang
1 Jawaban:
Saya tidak begitu mengerti relationnya seperti apa, tapi dari kode ini <pre> $items = Regency::where('name', $instance)->orderBy('id')->pluck('name', 'id'); dd($items); die(); </pre>
kalau itemsnya kosong, coba dengan ambil semuanya, apakah ada data atau tidak
<pre> $items = Regency::where('name', $instance)->get(); //orderby id tidak perlu sudah otomatis dd($items); die(); </pre>
kalau masih kosong, berarti di table Regency kamu nama $instance ini memang belum ada
Tanggapan
masih kosong bang, jadi tabel result itu berhubungan dengan table instansi, sedangkan table instansi sendiri di dalamnya terdapat field regency_id bang, begitu bang @hilmanrdn
lalu saya hanya ingin menampilkan di form input yang akan disimpan di result itu ketika saya klik nama instansi maka muncul instasi yang dipilih masuk dalam kabupaten mana, seperti itu bang
iyap, masalahnya berarti di database kamu masih salah, harusnya kalau melakukan yang diatas sudah keluar.
begitu ya kak , di table instansinya berarti yang salah ya
iyap kurang jelas dimana saya tidak tahu. Tapi kalau mengeluarkan data biasa tidak keluar(tanpa berhubungan dengan relation) berarti ada yang salah dasarnya
tetapi saya pernah menampilkan data demikian dengan menggunakan cakephp bisa bang dengan struktur db yang sama, akan tetapi ini setelah pakai laravel jadi gagal, berarti memang databasenya yang perlu dibenahi ya bang?
iyap betul