リレーションの実装に挑戦したいと考えております。1対1のリレーションでuserがPhoneを持つとした場合、どのようにコードを書くべきでしょうか。
そもそも現在のUser.php(Model)に追加して書けばいいのか、新しいModelを作成すればいいのかすらわかりません。大変恐縮ですが、ご教示お願いいたします。
※phoneテーブルにはuser_idとphone_numがあるとします。
php
1<?php 2 3namespace App; 4 5use Illuminate\Foundation\Auth\User as Authenticatable; 6 7class User extends Authenticatable 8{ 9 /** 10 * The attributes that are mass assignable. 11 * 12 * @var array 13 */ 14 protected $fillable = [ 15 'name', 'email', 'password', 16 ]; 17 18 /** 19 * The attributes that should be hidden for arrays. 20 * 21 * @var array 22 */ 23 protected $hidden = [ 24 'password', 'remember_token', 25 ]; 26}
php
1<?php 2 3namespace App; 4 5use Illuminate\Foundation\Auth\User as Authenticatable; 6use App\Phone; 7 8class User extends Authenticatable 9{ 10 /** 11 * The attributes that are mass assignable. 12 * 13 * @var array 14 */ 15 protected $fillable = [ 16 'name', 'email', 'password', 17 ]; 18 19 /** 20 * The attributes that should be hidden for arrays. 21 * 22 * @var array 23 */ 24 protected $hidden = [ 25 'password', 'remember_token', 26 ]; 27 28 29 public function phone() 30 { 31 return $this->hasOne(Phone::class, 'id', 'user_id'); 32 } 33} 34
php
1 public function mypage( $name, $id ) 2 { 3//Controller記載部分抜粋(※後にWhere('id',$id)で個人の携帯を紐づける予定です) 4 $users = User::all(); 5 6 foreach($users as $user) { 7 $phoneNumList[] = $user->phone->phone_num; // Userモデルで定義したphoneメソッド 8 } 9 echo $phoneNumList; 10 11 12 }
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Phone extends Model 8{ 9 protected $fillable = ['user_id','phone_num']; 10 11 protected $table = 'phones'; 12 13}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/13 02:40
2016/09/13 02:46
2016/09/15 15:02
2016/09/15 15:28
2016/09/16 03:30
2016/09/16 04:06
2016/09/16 04:41
2016/09/16 04:50