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

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

如何在沒有樞軸模型的情況下在 Laravel 中存儲多對多關系?

如何在沒有樞軸模型的情況下在 Laravel 中存儲多對多關系?

PHP
湖上湖 2024-01-19 20:50:27
我正在嘗試創建多對多關系我有 2 個主表和 1 個數據透視表userid : 1name : lily eventid: 1event_name: Waterpark Waterday-------id: 2event_name :Theme Park Adventureevent_userid : 1event_id : 2user_id : 1-------------id :2event_id :1user_id :1表用戶和事件都已創建。僅當用戶想要加入事件時創建數據透視表或關系。因此,當用戶單擊“應用”按鈕時,它只會存儲event_id并且user_id我想創建類似的東西。但我有問題,我不太確定如何保存它。它確實嘗試過,但我不斷收到錯誤。
查看完整描述

2 回答

?
千巷貓影

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

你可以使用attachdetach方法。

您還可以使用該sync方法來構造多對多關聯。該sync方法接受要放置在中間表上的 ID 數組。任何不在給定數組中的 ID 都將從中間表中刪除。因此,此操作完成后,中間表中將只存在給定數組中的 ID:

$user->events()->sync([1,2]);

數組中1,2是事件 id。

筆記

因為sync, attach您應該在模型中定義關系。

用戶模型

class User extends Model

{

? ? public function events()

? ? {

? ? ? ? return $this->belongsToMany('App\Event','event_user','user_id','event_id');

? ? }

}

事件模型


class Event extends Model

{

? ? public function users()

? ? {

? ? ? ? return $this->belongsToMany('App\User','event_user','event_id','user_id');

? ? }

}

根據您的代碼。


$user = User::find(Auth::user()->id);

$user->events()->sync([$request->event_id]);


查看完整回答
反對 回復 2024-01-19
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

我的可選答案:


(因為當您有大數據時,附加比同步更快)


//get current synced id

$attachedIds = $user->events()->pluck('id');

//check if there is a new id selected

//if its a single id

$new_id = array_diff([$request->event_id], $attachedIds);

//if its already an array

$new_id = array_diff($request->input('event_id', []), $attachedIds);


$user->events()->attach($new_id);


查看完整回答
反對 回復 2024-01-19
  • 2 回答
  • 0 關注
  • 268 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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