上篇我們講解忘記密碼功能後,使用者系統就建立的差不多了,不過我認為,難得已經可以辨別各個使用者了,能不能讓各個使用者之間有些互動?
所以我當時設計table時,將user及card設計為多對多,這表示一個user有多張card,而同時一張card也可能會有多個user擁有,實現多人編輯同一張card的功能。
我的需求大概是這樣的
以上就是我設想的群組功能,按照慣例我會先做最基本的功能,將邀請及踢出的功能做出,再想辦法實現那些if else的情況。
以上是我專案設計的table,在之前的文章中有提過,我在作card的CRUD之前會先用user去關聯,因此我想到,如果我要邀請那個user那我只要在groups這張表上面加上user_id和card_id不就可以了嗎?
因此這是我的邀請功能
#新增user 進來群組
public function store(Request $request, $cardId)
{
$userData = $request->userData;
$card = $userData->ShowCards->find($cardId);
if (!$card) {
return response()->json(['status' => false, 'error' => 'card search not found'], 400);
}
$userEmail = $request->email;
$addUser = Users::where('email', $userEmail)->first();
if (!$addUser) {
return response()->json(['status' => false, 'error' => 'user search not found'], 400);
}
$userId = $addUser->id;
$group = $card->ShowGroups->where('users_id', $userId)->first();
if (isset($group)) {
return response()->json(['status' => false, 'error' => 'user is already in card'], 400);
}
$create = Groups::create(['users_id' => $userId, 'card_id' => $cardId,]);
$card->update(['private' => false]);
return response()->json(['status' => true, 'group_data' => $create]);
}
說明:
這個功能我會需要使用者輸入被邀請者的email,還有想要邀他進哪一張card的card id。
以上便是我的群組功能的想法,不知道還有沒有漏洞?我慣例會將最基本的create功能做好後,再將各個漏洞補起來,最基本的就是檢查使用者輸入的東西是否正確,再依需求設定其他if。順帶一提這只是最基本的功能,如果群組中還要分級,那可能groups中還要加上一個判斷Lv的column,不過我想v現在先做出最基本的功能就好,之後再看要不要進行擴充,以上,Bye!