title: Laravel events firing multiple times, should only be firining once
body: <p>I have a model called Project, that has some model events setup like this, </p>
  
  <pre><code>class Project extends Eloquent {
      public static function boot()
      {
          parent::boot();
          // new project created
          static::created(function($project)
          {
               // create the data informing the client to pull the new project information
               $pullData = [
                  'id' =&gt; $project-&gt;id,
                  'item' =&gt; 'project',
                  'type' =&gt; 'created',
                  'interface' =&gt; '/project/basic/'.$project-&gt;id
              ];
              foreach($project-&gt;organisation-&gt;users as $user) {
                  if ($user-&gt;id != $project-&gt;user_id)
                      Pusherer::trigger('private-user'.$user-&gt;id, 'project:createdPull', $pullData);
                  }
              }
  
              Event::subscribe(new ProjectEventHandler);
              Event::fire('project.create', array($project));
  
              Event::fire('project.create', array($project));
              Event::forget('project.create');
  
  
              Event::subscribe(new OrganisationEventHandler);
              Event::fire('organisation.project.add', array($project,  $project-&gt;organisation, $project-&gt;user));
              Event::forget('organisation.project.add');
      });
  }
  </code></pre>
  
  <p>I create a project like this, </p>
  
  <pre><code>    $project = new Project;
      $project-&gt;name = $this-&gt;first_name . "'s example project";
      $project-&gt;slug = Stringhelpers::_uriHash( time() . $project-&gt;name );
      $project-&gt;uri_hash = Stringhelpers::_slugify($project-&gt;name);
      $project-&gt;total_cost = "1000.00";
      $project-&gt;start_date = date('Y-m-d H:i:s', time());
      $project-&gt;finish_date = date('Y-m-d H:i:s', strtotime('+1 month'));
      //$project-&gt;owner_id = $this-&gt;id;
      $project-&gt;client_id = $client-&gt;id;
      $project-&gt;status = 2;
      $project-&gt;user_id = $this-&gt;id;
      $project-&gt;organisation_id = $organisation-&gt;id;
      $project-&gt;archived_at = "0000-00-00 00:00:00";
      //$project-&gt;socketId = $this-&gt;socketId;
  
      //Add the created user to the project as a just watcher.
      //$project-&gt;flushEventListeners();
  
      if($project-&gt;save()) {
          $project-&gt;users()-&gt;attach(array($this-&gt;id =&gt; array('role' =&gt; 3, 'last_tab' =&gt; 'home')));
      }
  </code></pre>
  
  <p>To my mind this this should fire the created event on the model once, and each of the subscribed events once, but it is firining the events, or the created event 3 times, would there be reason for this?</p>
  
  <p>======= Further Details ======</p>
  
  <p>I am saving multiple models in my process, I have noticed that I get multiple events firing when there have been a previous save, so I do the following, I get too Item events, </p>
  
  <pre><code>$project = new Project;
      $project-&gt;name = $this-&gt;first_name . "'s example project";
      $project-&gt;slug = Stringhelpers::_uriHash( time() . $project-&gt;name );
      $project-&gt;uri_hash = Stringhelpers::_slugify($project-&gt;name);
      $project-&gt;total_cost = "1000.00";
      $project-&gt;start_date = date('Y-m-d H:i:s', time());
      $project-&gt;finish_date = date('Y-m-d H:i:s', strtotime('+1 month'));
      //$project-&gt;owner_id = $this-&gt;id;
      $project-&gt;client_id = $client-&gt;id;
      $project-&gt;status = 2;
      $project-&gt;user_id = $this-&gt;id;
      $project-&gt;organisation_id = $organisation-&gt;id;
      $project-&gt;archived_at = "0000-00-00 00:00:00";
      //$project-&gt;socketId = $this-&gt;socketId;
  
      //Add the created user to the project as a just watcher.
      //$project-&gt;flushEventListeners();
  
      if($project-&gt;save()) {
          $project-&gt;users()-&gt;attach(array($this-&gt;id =&gt; array('role' =&gt; 3, 'last_tab' =&gt; 'home')));
      }
  
  $item = new Item;
      $item-&gt;name = $this-&gt;first_name . "'s example item";
      $item-&gt;percentage_complete = 0;
      $item-&gt;project_id = $project-&gt;id;
      $item-&gt;workflow_id = 0;
      $item-&gt;user_id = $this-&gt;id;
      $item-&gt;start_date = $project-&gt;start_date;
      $item-&gt;finish_date = $project-&gt;finish_date;
      //$item-&gt;socketId = $this-&gt;socketId;
      //$item-&gt;flushEventListeners();
      $item-&gt;save();
  </code></pre>
  
  <p>my Item model looks like this, </p>
  
  <pre><code>public class Item extends Eloquent {
  
  public static function boot() { 
  
          parent::boot();
  
          // new item created 
          static::created(function($item) {
              // fire project pusher events
              Pusherer::trigger('project_'.$item-&gt;project_id, 'item:created', $item, $item-&gt;socketId);
  
              Log::info("ITEM CREATE CALLBACK STARTED");
              // fire off notifications and activity feeds
              Event::subscribe( new ProjectEventHandler );
              Event::fire('item.create', $item);
              // Event::forget('item.created');
              Log::info("ITEM CREATE CALLBACK FINISHED");
          });
  }
  }
  </code></pre>
  
  <p>Why would it aggrege my events each time I save something?</p>