質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1324閲覧

Laravel: データベースに登録されているidから、configurationファイルを使って都道府県を取得したい。

toyop

総合スコア30

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/08/20 18:20

こんにちは。

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が表示されてしまいます。

もし解決策をご存知の方がいらっしゃいましたらご教授お願いいたします。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mix-peach

2020/08/20 23:08

参考記事を、きちんと最後まで確認されましたか? 答えは書いてありましたよ。
guest

回答2

0

いっそのこと都道府県もマスタデータにもってUserにJOINさせて名称取得した方が楽なのでは。

投稿2020/08/21 00:07

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyop

2020/08/21 04:12

ご回答ありがとうございます。 そういうやり方も、確かにありですね...。 いろいろ試してみます。
guest

0

ベストアンサー

都道府県名を取得するために、getPrefNameAttributeというアクセサが定義されているので、そのアクセサを呼び出してあげましょう!(アクセサについて

<p>出身地:{{ Auth::user()->location }}</p>

この書き方だと、usersテーブルのlocationカラムを呼び出しているので、idが表示されています。

getPrefNameAttribute のアクセサを使って、configファイルを使って都道府県名に変換したいので、

<p>出身地:{{ Auth::user()->pref_name }}</p>

こちらで正しく値が取れるかと思います!

投稿2020/08/20 23:23

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyop

2020/08/21 04:10

ご回答ありがとうございます。教えていただいた通りコードを書き直したら無事、都道府県が表示されるようになりました! アクセサについてしらなかったので、もっと勉強しようと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問