亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Laravel 中連接表?

如何在 Laravel 中連接表?

PHP
喵喔喔 2023-04-15 20:22:36
我是 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

讓我知道這行得通,干杯!;)


查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號