ユーザの権限テーブルを作り、ユーザ登録画面確認画面でデータベースのリレーションを使って権限テーブルから値を取得して表示させたい時
### usersテーブル作成
Schema::create('users', function (Blueprint $table) {
// ...省略
$table->integer('role_id')->index()->unsigned()->nullable();
// 省略...
});
### rolesテーブルの作成
$ php artisan make:model Role -m
migrationファイル
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
}
$ php artisan migrate;
insert into roles (name) values (‘権限A’);
insert into roles (name) values (‘権限B’);
User.php
public function role(){
return $this->belongsTo('App\Role');
}
mass assignment
// 省略
### 登録画面
create.blade.php
– LaravelCollectiveでradioボタンを使って権限を選択する
<div class="form-check">
{{Form::radio('role_id', 1, true, ['class' => 'form-check-input'])}}
{!! Form::label('role_id', '権限A', ['class'=>'form-check-label']) !!}
</div>
<div class="form-check">
{{Form::radio('role_id', 2, null, ['class' => 'form-check-input'])}}
{!! Form::label('role_id', '権限B', ['class'=>'form-check-label']) !!}
</div>
### Controllerでの読み込み
UsersController.php
– plunkで、rolesテーブルのidとnameを配列で取得して、入力値と一緒にviewに渡す
use App\Role;
public function confirm(Request $request)
{
$roles = Role::pluck('name','id')->all();
$inputs = $request->all();
return view('admin.account.confirm', compact('inputs','roles'));
}
### 確認画面での表示
confirm.blade.php
– 入力画面から渡ってきたrolesテーブルのrole_idの値を表示
{{ $roles[$inputs['role_id']] }}