如何在FriendsOfCake / Search插件中搜索类型日期时间?

时间:2015-10-15 10:46:58

标签: search cakephp-3.1

我确实使用了FriendsOfCake/Search plugin,一切都很好,直到我搜索创建的日期时间。

当我提交搜索表单时,创建的变量变为http://localhost:8765/admin/logs?created=2015%2F10%2F10,我找不到任何记录。

如何使用FriendsOfCake/Search plugin搜索类型日期时间?

2 个答案:

答案 0 :(得分:0)

好吧,我找到了答案。

在FriendsOfCake /搜索插件中,它们支持多种类型的搜索:值,查找器,类似,自定义,比较。

我选择在TableClass中使用define my finder,如:

public function findCreated(Query $query, array $options) {
    if (!empty($options['created'])) {
        return $query->where(['Logs.created >=' => $options['created']]);
    }
    return $query->where(['Logs.created >= (CURDATE() - 10)']);
}

然后在i setup searchConfiguration中调用findCreated:

    public function searchConfiguration() {
    $search->finder('created');
    return $search;
}

然后,它的工作。

如果有人有更好的解决方案,请在此处发布您的答案。

<强>感谢。

答案 1 :(得分:0)

我找到了另一种方式

搜索插件中使用的回调函数:

最新版本1.2.3 FoC Search

$this->searchManager()
        ->add('id', 'Search.Value')
        ->add('role_id', 'Search.Value')
        ->add('email', 'Search.like', [
            'before' => true, 
            'after' => true, 
            'field' => [$this->aliasField('email')]
        ])
        ->add('full_name', 'Search.Like', [
            'before' => true, 
            'after' => true, 
            'field' => [$this->aliasField('full_name')]
        ])
        ->add('created', 'Search.Callback', [
            'callback' => function($query, $args, $manager) {
                return $query->andWhere(["Users.created >=" => new FrozenTime($args['created'])]);
            }
        ]);

在视图中,使用datepicker

View datepicker