【问题标题】:Update a value in a destroy method in Laravel在 Laravel 的销毁方法中更新值
【发布时间】:2017-11-29 08:27:12
【问题描述】:

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

当我点击“克隆”时,我的行被克隆并接收原始 ID 作为“parent_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/');
  }

即使我放了一个 die();在destroy方法中,他忽略了它。为什么不考虑呢?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    您需要在模型中定义父方法并像以下主题中的最佳答案一样访问父方法:

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

    【讨论】:

    • 感谢您的精彩回答!不幸的是我仍然有同样的问题......我觉得我的方法destroy没有考虑到,或者无论如何,我在里面所做的一切。但是,条目被很好地删除
    • 检查 $parentActivity->id 获取时是否有价值($parentActivity = $activity->parent()->first();)。如果它有值,它可能为 null 不能在模型中的非父方法中放入 hasClone 没有成功
    猜你喜欢
    • 2018-09-06
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2015-03-10
    • 2016-08-09
    相关资源
    最近更新 更多