Postingan lainnya
bagaimana cara merelasikan one to many ?
disini saya mempunyai kasus, 1 tabel user mempunyai banyak data registrasi. bagaimana cara merelasikan nya ? saya masih bingung di file controller nya. apakah ada yang bisa bantu ?
ini file controller saya
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class RegistrasiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$regist = User::all();
return view('Registrasi.Form_Registrasi', compact('regist'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request,[
'user_id' => 'required',
'provinsi' => 'required',
'kota_kabupaten' => 'required',
'kecamatan' => 'required',
'kelurahan' => 'required',
]);
Registrasi::create($request->all());
return redirect()->route('registrasi.create');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
dan ini file model user
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $primaryKey = 'id_user';
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/*
* Method untuk yang mendefinisikan relasi antara model user dan model Role
*/
public function roles()
{
return $this->belongsToMany(Role::class);
}
/*
* Method untuk menambahkan role (hak akses) baru pada user
*/
public function putRole($role)
{
if (is_string($role))
{
$role = Role::whereRoleName($role)->first();
}
return $this->roles()->attach($role);
}
/*
* Method untuk menghapus role (hak akses) pada user
*/
public function forgetRole($role)
{
if (is_string($role))
{
$role = Role::whereRoleName($role)->first();
}
return $this->roles()->detach($role);
}
/*
* Method untuk mengecek apakah user yang sedang login punya hak akses untuk mengakses page sesuai rolenya
*/
public function hasRole($roleName)
{
foreach ($this->roles as $role)
{
if ($role->role_name === $roleName) return true;
}
return false;
}
// method one to many registrasi
public function registrasi()
{
return $this->hasMany(Registrasi::class);
}
}
ini file model registrasi nya :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Registrasi extends Model
{
protected $fillable = [
'id_user', 'id_provinsi', 'id_kota', 'id_kecamatan', 'id_kelurahan'
];
public function user()
{
return $this->belongsTo('App\User');
}
}
dan ini file form blade nya :
@extends('layouts.app')
@section('content')
<div class="col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<i class="livicon" data-name="doc-portrait" data-c="#fff" data-hc="#fff" data-size="18" data-loop="true"></i>
Form Registrasi
</h3>
<span class="pull-right">
<i class="fa fa-fw fa-chevron-up clickable"></i>
<i class="fa fa-fw fa-times removepanel clickable"></i>
</span>
</div>
<div class="panel-body">
<form action="{{ route('registrasi.store') }}" method="POST" class="form-horizontal">
{{ csrf_field() }}
<div class="form-body">
<div class="form-group pad-top40">
<label for="inputUsername" class="col-md-3 control-label">
Pilih Pegawai
<span class='require'>*</span>
</label>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon">
<i class="livicon" data-name="user" data-size="18" data-c="#000" data-hc="#000" data-loop="true"></i>
</span>
<select name="user_id" class="form-control">
@foreach ($regist as $regis)
<option value="{{ $regis->id_user }}">{{ $regis->name }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-group">
<label for="inputEmail" class="col-md-3 control-label">
Provinsi
<span class='require'>*</span>
</label>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon">
<i class="livicon" data-name="location" data-c="#000000" data-hc="#fff111" data-size="18" data-loop="true"></i>
</span>
<select name="registrasi" class="form-control">
@foreach ($regist as $regis)
<option value="{{ $regis->provinsi }}">{{ $regis->nama_provinsi }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-group">
<label for="inputpassword" class="col-md-3 control-label">
Kota Kabupaten
<span class='require'>*</span>
</label>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon">
<i class="livicon" data-name="location" data-c="#000000" data-hc="#fff111" data-size="18" data-loop="true"></i>
</span>
<select name="provinsi" class="form-control">
@foreach ($regist as $regis)
<option value="{{ $regis->kota_kabupaten }}">{{ $regis->kota_kabupaten }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-group">
<label for="inputnumber" class="col-md-3 control-label">
Kecamatan
<span class='require'>*</span>
</label>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon">
<i class="livicon" data-name="location" data-c="#000000" data-hc="#fff111" data-size="18" data-loop="true"></i>
</span>
<select name="provinsi" class="form-control">
@foreach ($regist as $regis)
<option value="{{ $regis->kecamatan }}">{{ $regis->kecamatan }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-group">
<label for="inputAddress" class="col-md-3 control-label">
Kelurahan
<span class='require'>*</span>
</label>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon">
<i class="livicon" data-name="location" data-c="#000000" data-hc="#fff111" data-size="18" data-loop="true"></i>
</span>
<select name="provinsi" class="form-control">
@foreach ($regist as $regis)
<option value="{{ $regis->kelurahan }}">{{ $regis->kelurahan }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-actions">
<div class="col-md-offset-3 col-md-9">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
</div>
</div>
@endsection
3 Jawaban:
Di model user tinggal tambahin satu method mas
public function registrasi(){
return $this->hasMany(Registrasi::class);
}
sudah om cuman skrang problem nya belum bisa nyimpen ke database
Apanya mas yang gabisa simpen ke database? Jangan lupa tambahin data user di tabel registrasi, biasanya cukup simpen key nya aja dari tabel user.