【问题标题】:Laravel Crud Application Editing a recordLaravel Crud 应用程序编辑记录
【发布时间】:2019-11-18 13:09:11
【问题描述】:

我的 Laravel crud 注册申请有问题。 有这些表:RegistrationExtraRegistration(带有registration_id、extra_id和extraoptions_id), ExtraExtraOptions(带有 Extra_id)。

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

但是现在,当您单击编辑记录时,它会显示所有信息。问题是当您更改额外选项时,它会创建另一条记录,而不是更改选择。 而且当你编辑了一些东西并再次查看它时,它仍然会显示你编辑之前的选项。

注册控制器

$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 来解决问题,但不知道从哪里开始..

提前致谢!

【问题讨论】:

    标签: php laravel


    【解决方案1】:

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

    你可以在这里查看: https://laravel.com/docs/5.8/eloquent#other-creation-methods

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

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

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

      只是改变这一行

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

      【讨论】:

      • 我把那行放在哪里?
      • 代替这行$registrationextra = new ExtraRegistration();
      • 哦,好的,但现在我收到一条错误消息:从空值创建默认对象。 (在注册->isg_id)
      • 你能显示你更新的代码并检查你在$registrationextra得到了什么吗?
      • 我确实在找到 id 后转储并死了,它说 null
      猜你喜欢
      • 2014-10-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多