Laravel предотвращает удаление, если дочерняя таблица> 0 - PullRequest
0 голосов
/ 24 апреля 2019

Я использую 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.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 24 апреля 2019

Потому что вы используете только один возврат.Это.Означают, что при вводе if, который внутри удаляющей функции затем возвращает anthing, иначе ничего.Может быть, вы должны еще заявление вернуть что-нибудь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...