dsiv4041 2017-11-29 08:27
浏览 511
已采纳

更新Laravel中destroy方法中的值

I make a clone system in Laravel. I want to clone activities.

When I click on "Clone", my line is cloned and receives as the value in the column "parent_id" the ID of the original.

The original gets a value of 1 in the "hasClone" column.

But when I want to delete a clone, in my destroy method, I try to set hasClone (the original entry) to NULL before deleting the clone.

Here is my code :

  public function destroyChanges(Activity $activity)
  {

    $parentActivity = Activity::findOrFail($activity->parent_id)->first();
    $parentActivity->hasClone = NULL;
    $parentActivity->save();

    $activity->delete();

    return redirect()->to('/admin/activity/');
  }

Here is my route :

Route::delete('activity/destroyChanges/{id}', ['as' => 'cancel.activity', 'uses' => 'ActivityCrudController@destroyChanges']);

Here is my button :

{{ Form::open([ 'method'  => 'DELETE', 'route' => [ 'cancel.activity', $entry->getKey() ] ])  }}
    <button class="btn btn-default"><i class="fa fa-ban"></i> {{ trans('backpack::crud.cancel') }}</button>
{{ Form::close() }}

The entry of the clone is deleted correctly. But he does not update the original entry. How to do ? thank you very much

EDIT : I also tried that :

 public function destroyChanges($id)
  {
    $activity = Activity::findOrFail($id);

    $parentActivity = Activity::where('id', '=', $activity->parent_id)->first();
    $parentActivity->hasClone = NULL;
    $parentActivity->save();

    $activity->delete();

    return redirect()->to('/admin/activity/');
  }

Even if I put a die (); in the destroy method, he ignores it. Why does not it take it into account?

  • 写回答

1条回答 默认 最新

  • dtr84664 2017-11-29 08:52
    关注

    You need to define parent method in your model and access the parent like the best answer in the following toppic:

    How to implement a self referencing (parent_id) model in Eloquent Orm

    when you access to that can change hasClone field and save that before the update.

    Like this:

     $parentActivity = $activity->parent()->first();
     $parentActivity->hasClone = null;
     $parentActivity->save();
    

    Ensure to have something like this in your activity model:

    public function parent()
    {
        return $this->belongsTo('Activity', 'parent_id');
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,