public function test_key_by_attribute() { $data = new Collection(array(array('rating' => 1, 'name' => '1'), array('rating' => 2, 'name' => '2'), array('rating' => 3, 'name' => '3'))); $actual = $data->keyBy('rating'); $expected = array(1 => array('rating' => 1, 'name' => '1'), 2 => array('rating' => 2, 'name' => '2'), 3 => array('rating' => 3, 'name' => '3')); $this->assertEquals($expected, $actual->all()); $actual = $data->keyBy(function ($item) { return $item['rating'] * 2; }); $expected = array(2 => array('rating' => 1, 'name' => '1'), 4 => array('rating' => 2, 'name' => '2'), 6 => array('rating' => 3, 'name' => '3')); $this->assertEquals($expected, $actual->all()); }