diff --git a/CHANGELOG.md b/CHANGELOG.md index 84be878d..74f6ea58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to `laravel-query-builder` will be documented in this file ## 1.17.4 - 2019-06-03 - bugfix: `orderByRaw` is no longer being rejected as a sorting option (#258) +- bugfix: `addSelect` is no longer being replaced by the `?fields` parameter (#260) ## 1.17.3 - 2019-04-16 diff --git a/src/Concerns/AddsFieldsToQuery.php b/src/Concerns/AddsFieldsToQuery.php index 3259d6a3..08ac2a04 100644 --- a/src/Concerns/AddsFieldsToQuery.php +++ b/src/Concerns/AddsFieldsToQuery.php @@ -110,7 +110,9 @@ protected function addModelFieldsToQuery() $prependedFields = $this->prependFieldsWithTableName($modelFields, $modelTableName); - $this->select($prependedFields); + foreach ($prependedFields as $field) { + $this->addSelect($field); + } } protected function prependFieldsWithTableName(array $fields, string $tableName): array diff --git a/tests/ColumnTest.php b/tests/ColumnTest.php index 06f9447d..05869d4e 100644 --- a/tests/ColumnTest.php +++ b/tests/ColumnTest.php @@ -20,7 +20,7 @@ public function setUp(): void } /** @test */ - public function it_can_fetch_all_columns_if_none_is_given() + public function it_fetches_all_columns_if_none_are_given() { $queryBuilder = QueryBuilder::for(TestModel::class)->toSql(); @@ -42,4 +42,20 @@ public function it_can_fetch_only_required_columns() $this->assertEquals($expected, $queryBuilder); } + + /** @test */ + public function it_can_fetch_requested_columns_and_manually_added_selects() + { + $request = new Request([ + 'fields' => ['test_models' => 'name'], + ]); + + $queryBuilder = QueryBuilder::for(TestModel::class, $request) + ->addSelect('email') + ->toSql(); + + $expected = 'select "email", "test_models"."name" from "test_models"'; + + $this->assertEquals($expected, $queryBuilder); + } }