我对我在Laravel中的代码有点困惑。我有一个会员可以订阅一个或多个课程。我有三张桌子:会员、课程和less_member。
我创建了一个成员表单,通过这个表单,我可以在课程中注册该成员(我需要获得课程id,并将记录放在数据透视表中(。
然后我有了课程表;我可以创建一个新课程,并将其放入一个或多个成员中(在这种情况下,我需要成员代码(。这两个函数几乎相同,但参数不同。在我的解决方案中,我创建了两个具有两种不同功能的不同控制器。
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]);
}
}
成员控制器
<?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,我想我必须在模型中(或其他地方(放入一些代码,但我不知道如何继续。我想重构一个干净的解决方案。我读过关于特质的文章,但我不知道这是否是正确的做法。
LessonController
和MemberController
扩展了BaseController
。
在这个基本控制器中,创建一个名为add_lesson_member
的函数(你可以随意调用它(
然后,您只需要在LessonController或MemberController中使用$this->add_lesson_member()
来调用此函数。