【发布时间】:2019-01-17 01:07:39
【问题描述】:
我正在尝试导出我的数据的 CSV,该数据当前显示在我的 Silverstripe CMS 的一部分中,按特定日期范围过滤。它在导出整个内容时工作正常,但我希望能够过滤导出的结果,以便它返回特定日期范围内的所有结果。
我的数据库有一个记录创建日期的列 - 格式为 'D-M-Y;我认为可以使用 H-M-S' 进行过滤,但我不知道如何设置搜索过滤器。我知道,如果您使用可搜索字段然后导出,您只会导出过滤后的搜索结果,因此会假设这是最好的方法,但无法弄清楚如何实现它。
任何建议将不胜感激。
-- 免责声明 - 我本来想把它放在 silverstripe 论坛上,但由于某种原因我完全无法注册 - 我从未收到电子邮件确认。 ---
<?php
namespace AffiliateProgram;
use SilverStripe\Forms\GridField\GridField;
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
use SilverStripe\Security\Permission;
use SilverStripe\ORM\DataObject;
class MemberBonus extends DataObject
{
private static $db = [
'Amount' => 'Currency',
'Confirmed' => 'Boolean',
'Level' => 'Int',
'Percentage' => 'Int'
];
private static $has_one = [
'Member' => 'AffiliateProgram\Member',
'MemberPayment' => 'AffiliateProgram\MemberPayment',
'PaymentType' => 'AffiliateProgram\PaymentType',
'ProgramType' => 'AffiliateProgram\ProgramType'
];
private static $summary_fields = [
'Amount' => 'Amount (USD)',
'Member.Email' => 'Email',
'Level',
'MemberPayment.PaymentType.Symbol' => 'Recieved As',
'Percentage' => 'Percentage Bonus Applied',
'ProgramType.Name' => 'Program Type',
'MemberPayment.Created' => 'Payment Date',
'Confirmed' => 'Confirmed?',
'MemberPayment.ID' => 'Payment ID'
];
}
表格上还有一个 DateCreated 列。
【问题讨论】:
-
默认情况下,“导出为 CSV”按钮将从您的 GridField 中导出当前 过滤 DataList(假设您在这里使用的是 GridField),所以如果您已经按日期过滤它然后导出应该只获取这些记录并导出它们。这不是你看到的吗?如果不是,请提供您正在使用的 SilverStripe 版本以及您用于创建此 GridField 的代码
-
嗨@RobbieAverill,对不起,我没有说得很清楚。我可以按其他变量过滤,但不能按创建日期过滤。我正在使用 Silverstripe 4.1(我很确定)。这是我想弄清楚的过滤。我会将模型的代码添加到上面。谢谢大家!
标签: silverstripe silverstripe-4