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');
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功