我在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/');
}
即使我放了一个骰子();在破坏方法中,他忽略了它。为什么不考虑它?
答案 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');
}