-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Statement::fetchAllIndexedAssociative() and ::iterateIndexedAssociative() #4341
Conversation
$data = []; | ||
|
||
foreach ($stmt->fetchAll(FetchMode::ASSOCIATIVE) as $row) { | ||
$data[array_shift($row)] = $row; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to obtain a float from that call to array_shift
? If yes, should we assert the result of the call is a valid array key? Bit weird that SA tools do not complain here… Using a float as a key is possible but has surprising results: https://3v4l.org/E1jGM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When floats are used as array keys, they are cast to an integer. I don't think DBAL should do much about that. It can be not only float but NULL. It's up to the developer who uses this API to decide what they are using as a key.
Release [2.11.2](https://github.com/doctrine/dbal/milestone/81) 2.11.2 ====== - Total issues resolved: **5** - Total pull requests resolved: **16** - Total contributors: **10** Static Analysis --------------- - [4353: Update Psalm to 3.17.2 and lock the version used with GitHub Actions](doctrine#4353) thanks to @morozov - [4348: Bump Psalm level to 3](doctrine#4348) thanks to @morozov - [4332: Static analysis improvements](doctrine#4332) thanks to @morozov - [4319: Bump Psalm level to 4](doctrine#4319) thanks to @morozov Code Style ---------- - [4346: Minor CS improvement - use ::class for TestCase::expectException input](doctrine#4346) thanks to @mvorisek - [4344: Static analysis workflow](doctrine#4344) thanks to @greg0ire - [4340: Modernize existing ga](doctrine#4340) thanks to @greg0ire - [4309: Use cache action v2](doctrine#4309) thanks to @greg0ire - [4305: Move website config to default branch](doctrine#4305) thanks to @SenseException Improvement,Prepared Statements ------------------------------- - [4341: Add Statement::fetchAllIndexedAssociative() and ::iterateIndexedAssociative()](doctrine#4341) thanks to @morozov and @ZaneCEO - [4338: Add Statement::fetchAllKeyValue() and ::iterateKeyValue()](doctrine#4338) thanks to @morozov BC Fix,Query ------------ - [4330: Fix regression in QueryBuilder::and|orWhere()](doctrine#4330) thanks to @BenMorel Test Suite ---------- - [4321: Update PHPUnit to 9.4](doctrine#4321) thanks to @morozov Columns,SQL Server,Schema Managers ---------------------------------- - [4315: Fix handling existing SQL Server column comment when other properties change](doctrine#4315) thanks to @trusek CI -- - [4310: Migrate jobs away from Travis to Github Actions ](doctrine#4310) thanks to @greg0ire BC Fix,Connections ------------------ - [4308: doctrine#4295 Keep master, slaves, keepReplica params in MasterSlaveConnection](doctrine#4308) thanks to @kralos New Feature,Prepared Statements ------------------------------- - [4289: Add a fetch mode methods for "PDO::FETCH&doctrine#95;KEY&doctrine#95;PAIR"](doctrine#4289) thanks to @tswcode Bug,SQL Server,Schema --------------------- - [3400: Wrong column comment setting command in migrations of SQL Server](doctrine#3400) thanks to @msyfurukawa # gpg: Signature made Mon Oct 19 04:18:17 2020 # gpg: using DSA key 1BEDEE0A820BC30D858F9F0C2C3A645671828132 # gpg: Can't check signature: No public key
Closes #4206.
The fetch mode is analogous to the PDO's
FETCH_GROUP|FETCH_UNIQUE|FETCH_ASSOC
. Based on thefetchIndexed()
name proposed in #4206 (comment), I decided to name the method asfetchAllIndexedAssociative()
for the following reasons:fetchAll*()
methods.fetchAllIndexedNumeric()
(although it's less likely to be requested).fetchAllAssociativeIndexed()
from the code completion standpoint since it shares fewer leading characters withfetchAllAssociative()
.