正如标题所述,我正在 php 项目中使用 AlexaCRM/dynamics-webapi-toolkit 包。我有一些代码可以检索多个记录(这部分有效)。但是,我需要添加一种过滤器,以便只获取过去 X 天内有“modifiedon”的记录。这是当前有效的代码
$pagingInfo = new \AlexaCRM\Xrm\Query\PagingInfo();
$pagingInfo->Count = 10;
$client = ClientFactory::createOnlineClient(
'https://some-microsoft-crm.com',
'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
);
$query = new QueryByAttribute('contact');
$query->ColumnSet = new \AlexaCRM\Xrm\ColumnSet(columnSet(true));
$query->PageInfo = $pagingInfo;
$result = $client->RetrieveMultiple($query);
“modifiedon” 的格式为“2024-07-22T10:57:01Z”。(如果我输入确切的日期,则此方法有效$query->AddAttributeValue("modifiedon", $twoDaysAgoDateTimeFormat);
我曾尝试按照其他论坛的建议添加一个参数,但每次我在此行执行请求时都会失败:
$query->AddAttributeValue("modifiedon", 'ge ' . $twoDaysAgoDateTimeFormat);
或
$query->AddAttributeValue("modifiedon ge", $twoDaysAgoDateTimeFormat);
任何建议都会有帮助。
最佳答案
1
首先,QueryByAttribute 仅支持操作符" eq "
。
您应该使用FetchExpression
。以下代码检索过去 3 天内修改的联系人:
$fetchXML = <<<FETCHXML
<fetch mapping="logical">
<entity name="contact">
<all-attributes />
<filter>
<condition attribute="modifiedon" operator="last-x-days" value="3" />
</filter>
</entity>
</fetch>
FETCHXML;
$fetchExpression = new FetchExpression($fetchXML);
$collection = $client->RetrieveMultiple($fetchExpression);
这是。
顺便说一句,也可以用和生成。
2
-
正如您所建议的,这就是我最终所做的。效果很好。尽管我不知道“all-attributes”标签,所以我会尝试一下。您发布的链接很有用。感谢您的帮助 🙂
– -
“all-attributes”标签用于检索所有属性(与 SQL 中的 SELECT * FROM contact 相同);最好只选择必要的属性以获得更好的性能。
–
|
|