/**
  *
  * Create a new discussion instance based on the required data.
  *
  * @param integer $categoryId
  * @param integer $userId
  * @param string  $title
  * @param string  $body
  * @return Discussion
  */
 public function start($categoryId, $userId, $title, $body)
 {
     $discussion = new Discussion();
     $discussion->categoryId = $categoryId;
     $discussion->userId = $userId;
     $discussion->title = $title;
     $discussion->body = $body;
     $discussion->raise(new DiscussionWasStarted($discussion));
     return $discussion;
 }
 /**
  * We have a number of observers that immediately update related data when certain
  * actions occur, such as the number of comments on a discussion, or who last updated
  * or contributed to a category in some way.
  */
 public function boot()
 {
     $countCacheObserver = $this->app->make(CountCacheObserver::class);
     $updatedByObserver = new UpdatedByObserver();
     Comment::observe($countCacheObserver);
     Comment::observe($updatedByObserver);
     Discussion::observe($countCacheObserver);
     Discussion::observe($updatedByObserver);
 }