こんにちは。
Laravelで新規ユーザーが登録時に都道府県を選択できるようなセレクトボックスを作り、対応したidがDBのlocationカラムに保存されるようにしました。
例) '1' => '北海道',
次に、データベースのlocationカラムに入っているidから都道府県を取得してプロフィール欄に表示できるようにしたいのですが、うまくいきません。このページ(Laravelで都道府県のプルダウンメニューを作ってみる)を参考にして、configurationファイルを用意し、以下のコードを書きました(長くなってしまうので抜粋しました)。
profile.blade.php
php
1<div class="profile-usertitle-job"> 2 <p>出身地:{{ Auth::user()->location }}</p> 3</div>
User.php
php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Contracts\Auth\MustVerifyEmail; 6use Illuminate\Foundation\Auth\User as Authenticatable; 7use Illuminate\Notifications\Notifiable; 8 9class User extends Authenticatable 10{ 11 use Notifiable; 12 13 /** 14 * The attributes that are mass assignable. 15 * 16 * @var array 17 */ 18 protected $fillable = [ 19 'name', 'email', 'password', 'location', 20 ]; 21 22 /** 23 * The attributes that should be hidden for arrays. 24 * 25 * @var array 26 */ 27 protected $hidden = [ 28 'password', 'remember_token', 29 ]; 30 31 /** 32 * The attributes that should be cast to native types. 33 * 34 * @var array 35 */ 36 protected $casts = [ 37 'email_verified_at' => 'datetime', 38 ]; 39 40 public function tests() 41 { 42 return $this->hasMany('App\Test'); 43 } 44 45 public function getPrefNameAttribute() //<=ここ! 46 { 47 return config('pref.' . $this->location); 48 } 49}
pref.php
php
1<?php 2return array( 3 '0' => '未選択', 4 '1' => '北海道', 5 '2' => '青森県', 6 '3' => '岩手県', 7 '4' => '宮城県', 8 '5' => '秋田県', 9 '6' => '山形県', //以下省略 10);
このコードだと、そのままidが表示されてしまいます。
もし解決策をご存知の方がいらっしゃいましたらご教授お願いいたします。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー