更新Laravel中destroy方法中的值

时间:2017-11-29 08:27:13

标签: php laravel laravel-5

我在Laravel中制作克隆系统。我想克隆活动。

当我点击" Clone"时,我的行被克隆并作为列中的值接收" parent_id"原件的ID。

原文在" hasClone"中得到值1列。

但是当我想删除一个克隆时,在我的destroy方法中,我尝试在删除克隆之前将hasClone(原始条目)设置为NULL。

这是我的代码:

  public function destroyChanges(Activity $activity)
  {

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

    $activity->delete();

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

这是我的路线:

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

这是我的按钮:

{{ 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() }}

正确删除克隆的条目。但他没有更新原始条目。怎么做 ?非常感谢你

编辑:我也试过了:

 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/');
  }

即使我放了一个骰子();在破坏方法中,他忽略了它。为什么不考虑它?

1 个答案:

答案 0 :(得分:0)

您需要在模型中定义父方法并访问父级,如下面的toppic中的最佳答案:

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

当您访问时,可以更改hasClone字段并在更新之前保存该字段。

像这样:

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

确保在您的活动模型中有类似的内容:

public function parent()
{
    return $this->belongsTo('Activity', 'parent_id');
}