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

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

建立這種拉拉維爾關系的正確方法?

建立這種拉拉維爾關系的正確方法?

PHP
斯蒂芬大帝 2022-08-19 15:50:13
我正在尋求一些邏輯建議。我正在創建一個系統,用戶可以在其中登錄并注冊他們對活動的參與情況。他們可以多次參加一項活動。最好的方法是什么?我想確保我可以雄辯地使用它,而不是創建自己的函數。我正在想象...用戶:id活動:id name參與:id user_id activity_id time_at_activity我希望以后能夠做這樣的事情:例如。$user->participations->where('activity_id', 3)設置它的最佳方法是什么?我想到了..用戶: 有多種>參與活動: 屬于>參與參與:具有許多>活動和屬于>用戶這看起來正確嗎?
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

http://img1.sycdn.imooc.com//62ff40cc0001b6cc06480180.jpg

用戶架構可以通過稱為參與的數據透視表與活動相關聯:


/**

 * Indicate that the model belongs to a user.

 *

 * @see \App\Model\User

 *

 * @return BelongsTo

 */

public function user()

{

    return $this->belongsTo(User::class);

}


/**

 * Indicate that the model belongs to many activity participations.

 *

 * @see \App\Model\Activity

 *

 * @return BelongsTo

 */

public function participations()

{

    return $this->belongsToMany(Activity::class, 'participations');

}


$user->participations()->attach($activity);

您可能希望添加互惠關系。這些可以分離出來作為代碼重用的特征。->attach(['participated_at' => now()])


查看完整回答
反對 回復 2022-08-19
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

數據庫架構

http://img1.sycdn.imooc.com//62ff40e10001b24e06160443.jpg

// App\User

public function participations()

{

    return $this->hasMany('App\Participation');

// You may create App\Participation Model

// App\Participation 

public function user()

{

    return $this->belongsTo('App\User');


// Controller

$userParticipations = $user->participations->where('activity_id', 3);

// eager loading version

$userWithParticipations = $user->with(['participations' => function($q) { $q->where('activity_id', 3) }])->get();



查看完整回答
反對 回復 2022-08-19
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

您可以使用多對多關系。


用作數據透視表。將關系定義為Participation


/* in User */

public function activity()

{

    return $this->belongsToMany('App\Models\Activitys','participation','user_id','activity_id')->as('participation')->withPivot('time_at_activity');


/* in Activity */

public function user()

{

    return $this->belongsToMany('App\Models\Users','participation','activity_id','user_id')->as('participation')->withPivot('time_at_activity');


查看完整回答
反對 回復 2022-08-19
  • 3 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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