我是 Laravel 的新手,我有一個關于 Eloquent 的問題:這是我的數據庫表結構:users- id- user_id- username- name- email- password- email_verified_at- remember_tok- created_at- updated_atchallenges- id- challenge_id- category_id- hashtag- title- description- duration- link- created_at- updated_at- user_iduser_challenges- user_id- challenge_id- duration- created_at- updated_at我想要實現的是顯示用戶的挑戰,例如,如果用戶在用戶儀表板中加入挑戰,我想顯示他加入的挑戰,以及用戶創建的挑戰(如果他創建了任何);模型\用戶.phpclass User extends Authenticatable{ use Notifiable; public function challenges() { return $this->hasMany(Challenge::class, 'user_id'); } public function userChallenges() { return $this->hasMany(UserChallenge::class, 'user_id'); }}模型\挑戰.phpclass Challenge extends Model{ public function user () { return $this->belongsTo(User::class, 'user_id'); }}模型\UserChallenge.phpclass UserChallenge extends Model{ public function user () { return $this->belongsTo(User::class, 'user_id'); }}這是我的家庭控制器中的內容: App\Http\Controllers\HomeController.phpclass HomeController extends Controller{ public function index() { $user_id = auth()->id(); $user = User::find($user_id); return view('home') ->with('challenges', $user->challenges) ->with('userChallenges', $user->userChallenges); }}這是我目前在“我的儀表板”中獲得的“加入挑戰”的內容 - 但如何在返回視圖時加入表格,以便我也可以獲得挑戰主題標簽標題?就像我在“我的挑戰”部分下獲得的一樣? 儀表板更新:我應該將什么添加到我的數據庫中,以便我可以計算已加入挑戰的用戶數量?
1 回答

當年話下
TA貢獻1890條經驗 獲得超9個贊
為了獲得用戶創建的挑戰,我相信您已經正確地做到了。
并讓用戶加入挑戰。您幾乎可以正確使用數據透視表。您可以在 laravel 文檔中查看多對多關系。
這些是用于檢索用戶創建的挑戰和用戶加入的挑戰的示例代碼。這些代碼應該駐留在您的用戶模型中,您應該保留該模型。
public function created_challenges()
{
return $this->hasMany(Challenge::class,'user_id','id');
}
public function joined_challenges()
{
return $this->belongsToMany(Challenges::class, 'user_challenges', 'user_id', 'challenges_id');
}
一旦關系正常工作,您就可以簡單地使用從關系返回的集合。將 傳遞$user->joined_challenges給視圖后,您可以執行以下操作
@foreach ($joined_challenges as $challenge)
<p>{{$challenge->hashtag}}</p>
<p>{{$challenge->title}}</p>
@endforeach
讓我知道這行得通,干杯!;)
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消