ユーザの権限テーブルを作り、ユーザ登録画面確認画面でデータベースのリレーションを使って権限テーブルから値を取得して表示させたい時
### 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']] }}