public function push(Model $model, $key = null) { if (is_null($key)) { $model->setKey(count($this->models)); return $this->models[] = $model; } if (is_array($key)) { $key = implode("-", $key); } if (array_key_exists($key, $this->models)) { return $this->models[$key]; } $model->setKey($key); return $this->models[$key] = $model; }