我使用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的原因。
有没有更好的方法?
2条答案
按热度按时间guykilcj1#
类别.php
类别控制器.php
axkjgtzd2#
因为你只使用了一个return。这意味着当进入if函数时,在删除函数中,返回一个东西,否则什么都不返回。也许你必须用else语句返回任何东西。