Я использую 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.
Есть ли лучший способ сделать это?