我为我的学术项目设置了新的laravel 5.7。我想使用Laravel制作药物提醒项目。 为此,我有2个表:
我有用于用户和医学的模型和控制器。
控制器
模型
在模型中,用户和医学具有多对多关系。为了维护“多对多”,我有一个链接表User_Medicine,其中包含两个父表的外键。
现在在控制器中,用户添加了药品详细信息,应用程序应检查药品是否已在数据库中。如果药物已经存在,则应用程序应在链接表中为其分配med_id和user_id。但是,如果数据库应用程序中不存在药物,则应添加新的药物详细信息。此过程是用MedUserController编写的。
现在的问题是,我具有在MedicineController @ store中添加药物的功能。我想从当前控制器(MedUserController)中重用该功能。
什么是最好的方法?请提出建议。
答案 0 :(得分:0)
控制器旨在详细说明输入并提供响应对象。话虽这么说,但是从另一个控制器调用一个控制器是一个坏习惯。
在您的情况下,应使用Repository Pattern处理此问题,这意味着您有一个负责从数据库创建/检索对象的类,并且可以从任何控制器/类调用它。
这是我会做的事的根源
public function controllerAction() {
$user = Auth::user();
$medicineData = request()->all();
$medicine = $this->medicineRepository->store($medicineData);
$user->medicines()->attach($medicine);
}
在存储库的store
方法中,您可以检查药物是否已经存在或是新药物,并且始终返回一个Medicine
对象。