items, function($key, $model) { return $model->getKey() == $key; }, $default); } /** * Load a set of relationships onto the collection. * * @param dynamic string * @return void */ public function load() { if (count($this->items) > 0) { $query = $this->first()->newQuery()->with(func_get_args()); $this->items = $query->eagerLoadRelations($this->items); } } /** * Add an item to the collection. * * @param mixed $item * @return \Illuminate\Database\Eloquent\Collection */ public function add($item) { $this->items[] = $item; return $this; } /** * Determine if a key exists in the collection. * * @param mixed $key * @return bool */ public function contains($key) { return ! is_null($this->find($key)); } /** * Fetch a nested element of the collection. * * @param string $key * @return \Illuminate\Support\Collection */ public function fetch($key) { return new static(array_fetch($this->toArray(), $key)); } /** * Get the array of primary keys * * @return array */ public function modelKeys() { return array_map(function($m) { return $m->getKey(); }, $this->items); } }