microsoftgraph / microsoftgraph/msgraph-sdk-php
[2.0.0-RC13] TransitiveMemberOfRequestBuilder ignoring QueryParameters select
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 669
- Forks
- 150
- Avg merge
- 15h 21m
- Merged PRs (30d)
- 3
Description
Upon creating a TransitiveMemberOfRequestBuilder and applying a TransitiveMemberOfRequestBuilderGetRequestConfiguration->queryParameters->select I can see the URL is changed to include the $select fields in odataNextLink. But when I actualy run the query with get($groupsRequestConfig) the additional fields are not returned.
If I take the URL and put it into graph explorer, it returns the fields as requested.
Sample code and var_dump's
<?php
$groupsRequest = $GraphServiceClient->me()->transitiveMemberOf();
$groupsRequestConfig = new TransitiveMemberOfRequestBuilderGetRequestConfiguration();
$groupsRequestConfig->queryParameters = new TransitiveMemberOfRequestBuilderGetQueryParameters();
$groupsRequestConfig->queryParameters->select = [
'id',
'samAccountName',
'displayName',
'groupTypes',
'securityEnabled'
];
$groupsResponse = $groupsRequest->get($groupsRequestConfig); # Http\Promise\FulfilledPromise
$groups = $groupsResponse->wait(); # Microsoft\Graph\Generated\Models\DirectoryObjectCollectionResponse
$myGroups = []
foreach ($groups->getValue() as $g) {
$myGroups[] = $g->getDisplayName();
}
/*
$groups = object(Microsoft\Graph\Generated\Models\DirectoryObjectCollectionResponse)#302 (1) {
["backingStore":"Microsoft\Graph\Generated\Models\BaseCollectionPaginationCountResponse":private]=>
object(Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore)#298 (4) {
["isInitializationCompleted":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(true)
["returnOnlyChangedValues":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(false)
["store":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
array(3) {
["additionalData"]=>
array(3) {
[0]=>
bool(false)
[1]=>
array(1) {
["@odata.context"]=>
string(117) "https://graph.microsoft.com/v1.0/$metadata#directoryObjects(id,samAccountName,displayName,groupTypes,securityEnabled)"
}
[2]=>
int(1)
}
["odataNextLink"]=>
array(2) {
[0]=>
bool(false)
[1]=>
string(303) "https://graph.microsoft.com/v1.0/me/transitiveMemberOf?$select=id%2csamAccountName%2cdisplayName%2cgroupTypes%2csecurityEnabled&$skiptoken=R..."
}
["value"]=>
array(3) {
[0]=>
bool(false)
[1]=>
array(100) {
[0]=>
object(Microsoft\Graph\Generated\Models\Group)#194 (1) {
["backingStore":"Microsoft\Graph\Generated\Models\Entity":private]=>
object(Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore)#193 (4) {
["isInitializationCompleted":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(true)
["returnOnlyChangedValues":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(false)
["store":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
array(6) {
["additionalData"]=>
array(3) {
[0]=>
bool(true)
[1]=>
array(0) {
}
[2]=>
int(0)
}
["odataType"]=>
array(2) {
[0]=>
bool(true)
[1]=>
string(22) "#microsoft.graph.group"
}
["id"]=>
array(2) {
[0]=>
bool(true)
[1]=>
string(36) "b...4"
}
["displayName"]=>
array(2) {
[0]=>
bool(true)
[1]=>
NULL
}
...
$g = object(Microsoft\Graph\Generated\Models\Group)#556 (1) {
["backingStore":"Microsoft\Graph\Generated\Models\Entity":private]=>
object(Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore)#555 (4) {
["isInitializationCompleted":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(true)
["returnOnlyChangedValues":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
bool(false)
["store":"Microsoft\Kiota\Abstractions\Store\InMemoryBackingStore":private]=>
array(6) {
["additionalData"]=>
array(3) {
[0]=>
bool(true)
[1]=>
array(0) {
}
[2]=>
int(0)
}
["odataType"]=>
array(2) {
[0]=>
bool(true)
[1]=>
string(22) "#microsoft.graph.group"
}
["id"]=>
array(2) {
[0]=>
bool(true)
[1]=>
string(36) "8...8"
}
["displayName"]=>
array(2) {
[0]=>
bool(true)
[1]=>
NULL
}
....
*/
?>
PS. Please create more documentation, this sdk is a monster for having so little documentation and examples.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at TransitiveMemberOfRequestBuilder->get() and its queryParameters->select handling, then trace how the response populates DirectoryObjectCollectionResponse and Group models. Compare the requested fields in the generated URL with the fields available after wait(); done means the selected properties are returned consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- api
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100