[英]laravel 5 show related data to logged in user
在Laravel 5項目中,我試圖向登錄的用戶顯示其課程包的詳細信息。 我正在嘗試使用where子句來獲取所需的信息。 看來我無法從要返回的集合中獲取關系數據。 我迷路了,需要一些指導。 我似乎找不到與此類問題有關的任何信息。
當前錯誤:未定義的屬性:Illuminate \\ Database \\ Eloquent \\ Collection :: $ players(查看:/home/ubuntu/workspace/resources/views/auth/account/mylessonhours.blade.php)
我的控制器:
public function getMyLessonhours(Lessonhours $lessonhours, Packages $packages)
{
$packages = Packages::all();
$lessonhours = Lessonhours::whereHas('players', function($q)
{
$q->where('users_id', '=', Auth::user());
})->with('players')->get();
return view('auth.account.mylessonhours', compact('lessonhours'), compact('packages'));
}
我的關系:用戶:
public function players()
{
return $this->hasMany('App\Players', 'users_id');
}
玩家:
public function users()
{
return $this->belongsTo('App\User', 'users_id');
}
Lessonhours:
public function players()
{
return $this->belongsTo('App\Players', 'players_id');
}
public function packages()
{
return $this->belongsTo('App\Packages', 'packages_id');
}
public function hoursused()
{
return $this->hasMany('App\Hoursused', 'lessonhours_id');
}
而視圖失敗的部分
<h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3>
{{ $lessonhours->players->gender }}<br>
<a href="#" class="btn btn-default btn- pull-right">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
Edit {{ $lessonhours->players->getFullName($lessonhours->players->id) }}</a>
Birthdate: {{ $lessonhours->players->birthdate->format('m-d-Y') }}<br>
Family: {{ $lessonhours->players->users->famname }}<br>
<hr>
謝謝你的幫助。
UDATE:經過dd($ lessonhours); 我在集合中得到了以下數據,該數據確實顯示了所需的信息,我只是繼續收到上面的“未定義”錯誤:
Collection {#216 ▼
#items: array:1 [▼
0 => Lessonhours {#202 ▼
#fillable: array:3 [▶]
+table: "lessonhours"
#dates: array:1 [▶]
#connection: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:6 [▼
"id" => 2
"players_id" => 2
"packages_id" => 2
"signup_date" => "2016-06-01"
"created_at" => "2016-11-19 03:31:11"
"updated_at" => "2016-11-19 03:31:11"
]
#original: array:6 [▶]
#relations: array:1 [▼
"players" => Players {#220 ▼
+table: "players"
#fillable: array:4 [▶]
#dates: array:1 [▶]
#connection: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:8 [▼
"id" => 2
"users_id" => 2
"fname" => "Girltest"
"lname" => "Testfam"
"gender" => "Female"
"birthdate" => "2010-10-04"
"created_at" => "2016-11-19 03:30:56"
"updated_at" => "2016-11-19 03:30:56"
]
#original: array:8 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
+wasRecentlyCreated: false
}
]
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
+wasRecentlyCreated: false
}
]
}
更新:錯誤發生在下面的行:
<h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3>
您需要從用戶對象獲取ID,因此將查詢更改為:
$lessonhours = Lessonhours::whereHas('players', function($q) {
$q->where('users_id', Auth::user()->id);
})->with('players')->get();
由於get()
方法返回集合數組,而與結果數無關。 如果只期望單個結果,則可以使用first()
方法。
$lessonhours = Lessonhours::whereHas('players', function($q)
{
$q->where('users_id', '=', Auth::user()->id);
})->with('players')->first();
或在視圖中渲染時for each
循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.