我的Laravel crud注册申请存在问题。 这些表格包括:注册,额外注册(带有registration_id,extra_id和extraoptions_id), 额外和额外选项(带有Extra_id)。
在RegistrationController中,当我添加一个Registration时,它会使用extraoptions_id和extra_id在ExtraRegistration中创建新记录。 extra_id是选项的名称,extraoptions_id是您选择的选项的ID。
但是,现在,当您单击“编辑记录”时,它将显示所有信息。问题在于,当您更改额外选项时,它会生成另一条记录,而不更改选择。 并且,当您编辑完某些内容并再次查看时,它仍会在您编辑之前显示该选项。
RegistrationController
$options = Extra::where("exa_form_id", $distance->asd_form_id)->get();
foreach($options as $option){
$input_name = "option_" . $option->exa_id;
$input_option = $request->$input_name;
if(!is_null($input_option)){
$input_name_extra = "extraoptions_" . $option->exa_id;
$input_option_extra = $request->$input_name_extra;
$registrationextra = new ExtraRegistration();
$registrationextra->iea_registration_id = $registration->isg_id;
$registrationextra->iea_extra_id = $input_option;
$registrationextra->iea_extraoption_id = $input_option_extra;
$registrationextra->iea_price = $option->exa_price;
$registrationextra->save();
}
}
$registration->isg_options = $input_option;
$registration->isg_option_extra_id = $input_option_extra;
编辑: 在进行新的ExtraRegistration之前,我需要检查。如果该注册表中的registration_id(在ExtraRegistration中)已经存在该注册中的价格,则该价格不会在ExtraRegistration中进行另一记录。 我想使用if来解决问题,但不确定从哪里开始。
谢谢!
答案 0 :(得分:0)
您正在创建ExtraRegistration()
的新对象,因此它每次都会插入/创建新记录。
只需更改此行
$registrationextra = ExtraRegistration::find($id);//any id to fetch record
答案 1 :(得分:0)
如果您只使用Laravel提供的开箱即用的firstOrCreate
方法,对您来说可能会更容易。
您可以在此处进行检查: https://laravel.com/docs/5.8/eloquent#other-creation-methods
这样,您将可以检索正在寻找的记录(如果有的话),然后对其进行所有更改。如果该记录不存在,Laravel将为您创建新记录,您将可以对其进行更新。
我希望这会有所帮助!