public function keyBy($key) { $collection = new Collection(); foreach ($this->collection as $item) { $collection->push($item, is_callable($key) ? $key($item) : (is_object($item) ? $item->{$key} : $item[$key])); } return $collection; }