获取银条中两个日期之间的值



我添加了两个日期字段。 我想检索这两个表之间的数据。付款日期和支票邮寄日期是两个字段。所以我需要获取两个日期之间的行。

只需搜索内容有两个日期字段。 我想检索这两个日期之间的行(数据(

public function __construct($modelClass, $fields = null, $filters = null) {
    $fields = new FieldList(array(
        DateField::create('PaymentDate','Payment Date : from')
            ->setConfig('dateformat', 'yyyy-MM-dd')
            ->setConfig('showcalendar', true)
            ->setAttribute('placeholder','YYYY-MM-DD')
            ->setDescription(sprintf(
                _t('FormField.Example', 'e.g. %s', 'Example format'),
                Convert::raw2xml(Zend_Date::now()->toString('yyyy-MM-dd'))
            )),
        DateField::create('ChequePostedDate','cr Date : to')
            ->setConfig('dateformat', 'yyyy-MM-dd')
            ->setConfig('showcalendar', true)
            ->setAttribute('placeholder','YYYY-MM-DD')
            ->setDescription(sprintf(
                _t('FormField.Example', 'e.g. %s', 'Example format'),
                Convert::raw2xml(Zend_Date::now()->toString('yyyy-MM-dd'))
            )),
        ));
    $filters = array(
        'PaymentDate'      =>  new PartialMatchFilter('PaymentDate'),
        'ChequePostedDate'      =>  new PartialMatchFilter('ChequePostedDate'),

    );
    parent::__construct($modelClass, $fields, $filters);
}
public function getQuery($searchParams, $sort = false, $limit = false, $existingQuery = null) {
    $dataList = parent::getQuery($searchParams, $sort, $limit, $existingQuery);
    $params = is_object($searchParams) ? $searchParams->getVars() : $searchParams;
    $query = $dataList->dataQuery();
    if(!is_object($searchParams)) {
        if (isset($params['PaymentDate'])&& $params['ChequePostedDate'] ) {
            $query->where('`PaymentNote`.PaymentDate BETWEEN ''.$params['PaymentDate'].' ' AND ''.$params['ChequePostedDate'].''');
        }
    }
    return $dataList->setDataQuery($query);
}

}

您也可以使用如下所示WithinRangeFilter,但您需要根据此论坛响应使用setMin()setMax()方法:https://www.silverstripe.org/community/forums/form-questions/show/11685

public function getQuery($searchParams, $sort = false, $limit = false, $existingQuery = null) {
    $dataList = parent::getQuery($searchParams, $sort, $limit, $existingQuery);
    $params = is_object($searchParams) ? $searchParams->getVars() : $searchParams;
    $query = $dataList->dataQuery();
    if(!is_object($searchParams)) {
        if (!empty($params['PaymentDate'] && !empty($params['ChequePostedDate'])) {
            return $dataList->filter('PaymentDate:WithinRange', [$params['PaymentDate'], $params['ChequePostedDate']]);
        }
    }
    return $dataList;
}

我解决了它。只需删除$filters

$filters = array(
   // 'PaymentDate'      =>  new PartialMatchFilter('PaymentDate'),
    //'ChequePostedDate'      =>  new PartialMatchFilter('ChequePostedDate'),

);

然后它起作用

相关内容

  • 没有找到相关文章

最新更新