Laravel Crud应用程序编辑记录



我的Laravel crud注册应用程序有问题。有以下表:RegistrationExtraRegistration(具有Registration_id、extra_id和extraoptions_id(,ExtraExtraOptions(带有Extra_id(。

在RegistrationController中,当我添加一个Registration时,它会在ExtraRegistration中使用extraoptions_id和extra_id创建一个新记录。extra_id是选项的名称,extraoptions_id是所选选项的id。

但现在,当你点击编辑记录时,它会显示所有信息。问题是,当您更改extraoption时,它会生成另一条记录,而不会更改select。当你编辑了一些东西,再看一遍,它仍然显示你编辑它之前的选项。

注册控制器

$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中(中,则它不会在ExtraRegulation中创建另一个记录。我想用if来解决这个问题,但不确定从哪里开始。。

提前感谢!

如果您只使用Laravel提供的开箱即用的firstOrCreate方法,可能会更容易。

您可以在此处查看:https://laravel.com/docs/5.8/eloquent#other-创建方法

这样,您就可以检索您正在查找的记录(如果有(,然后对其执行所有更改。如果该记录不存在,Laravel将为您创建新记录,您可以更新该记录。

我希望这能有所帮助!

您正在创建ExtraRegistration()的新对象,因此它每次都会插入/创建新记录。

只是更改了这条线

$registrationextra = ExtraRegistration::find($id);//any id to fetch record

最新更新