0

I'm a bit confused about my code in Laravel. I have a member that can subscribe to one or more lessons. I have three tables: members, lessons, and lesson_member.

I created a member form, and from this form, I can register the member in the lesson (I need to get the lesson id, and I put the record in the pivot table).

Then I have the lesson form; I can create a new lesson and put inside one or more members (in this case I need the member code). Those two functions are nearly the same, but the parameters are different. In my solution, I created two different controllers with two different functions.

LessonController

<?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]);
    }
}

MemberController

<?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]);
    }
}

I have the same problem with the removeFromLesson() method and in the updateLessonMember method, but the solution should be similar. It is for sure not DRY, and I think I have to put some code in the model (or somewhere else), but I don't know how to proceed. I want to refactor to have a clean solution. I read about traits, but I don't know if it's the right way to follow.

Karl Hill
  • 12,937
  • 5
  • 58
  • 95
m.Sarto
  • 179
  • 3
  • 16

1 Answers1

0

LessonController and MemberController extends a BaseController.

Inside that base controller, create a function called add_lesson_member(you can call it whatever you want)

Then you just need to call this function using $this->add_lesson_member() inside your LessonController or MemberController.

Amitoz Deol
  • 442
  • 5
  • 16