我使用Laravel 5.8,并且遇到这种情况。我要防止删除类别(如果其中包含产品)。这就是我到目前为止
Category.php
public function products(){
return $this->hasMany('App\Product');
}
protected static function boot() {
parent::boot();
static::deleting(function($category) {
if ($category->products()->count() > 0) {
return false;
}
});
}
CategoriesController.php
public function destroy($id) {
$category = Category::findOrFail($id);
$delete_status = $category->delete();
if($delete_status == 1) {
return redirect()->route('categories.index')->with('success','Deleted Sucesfully');
} else {
return redirect()->route('categories.index')->with('error','Cant delete bacause it has products in it');
}
}
到目前为止,它仍然有效,但是我觉得它有点粗略。如果类别没有任何产品,则$ delete_status变量将返回1,但是如果类别中包含产品,则该变量将不返回任何内容,这就是为什么我使用if / else而不是if / elseif的原因。
有更好的方法吗?
答案 0 :(得分:0)
因为您只使用一次退货。这个。意思是当进入if里面的删除函数然后返回任何东西时,否则什么也没有。也许您必须以其他方式声明返回任何内容。