Laravel のコードについて少し混乱しています。1 つまたは複数のレッスンを購読できるメンバーがいます。members、lessons、lesson_member の 3 つのテーブルがあります。
メンバー フォームを作成し、このフォームからメンバーをレッスンに登録できます (レッスン ID を取得する必要があり、ピボット テーブルにレコードを配置します)。
次に、レッスンフォームがあります。新しいレッスンを作成し、1 つ以上のメンバーを配置できます (この場合、メンバー コードが必要です)。これら 2 つの関数はほぼ同じですが、パラメーターが異なります。私のソリューションでは、2 つの異なる機能を持つ 2 つの異なるコントローラーを作成しました。
レッスンコントローラー
<?php
public function addMember(Request $request)
{
$lessonMember = new LessonMember();
$lessonId = $request->session()->get('lessonId', 1);
if ((!($lessonMember::where('lesson_id', '=', $lessonId)
->where('license_member_id', '=', $request->memberId)
->exists()))) {
$lessonMember->lesson_id = $lessonId;
$lessonMember->license_member_id = $request->memberId;
$lessonMember->save();
$member = LicenseMember::find($request->memberId)->member;
return response()->json(['user_saved' => $member, 'llm' => $lessonMember, 'actualMembers' => $actualMembers]);
}
}
メンバーコントローラー
<?php
public function addLesson(Request $request)
{
$lessonMember = new LessonMember();
$memberId = $request->session()->get('memberId', 1);
if ((!($lessonMember::where('lesson_id', $request->lessonId)
->where('license_member_id', $memberId)
->exists()))) {
$lessonMember->lesson_id = $request->lessonId;
$lessonMember->license_member_id = $memberId;
$lessonMember->save();
$member = LicenseMember::find($memberId)->member;
return response()->json(['user_saved' => $member, 'llm' => $lessonMember]);
}
}
removeFromLesson() メソッドと updateLessonMember メソッドで同じ問題がありますが、解決策は似ているはずです。それは確かにDRYではなく、モデル(または他の場所)にコードを配置する必要があると思いますが、続行する方法がわかりません。クリーンなソリューションを得るためにリファクタリングしたい。特性について読みましたが、それが正しい方法かどうかわかりません。