我很难理解如何通过项目中的日期过滤事物dd/mm/yyyy
拉起头发后,我终于成功地使用了代码,我将通过搜索日期来与您分享我的过滤栏。
但是,所有其他研究(以姓名为例)不再显示任何内容。
当我更改此行
时$fullDate = DateTime::createFromFormat( "d/m/Y", $filter);
到此行
$fullDate = DateTime::createFromFormat( "d/m/Y", date("d/m/Y");
我的日期研究起作用,但没有其他搜索(名称,品牌)。相反,所有其他研究工作(副名,品牌),但不再是日期。
所以我真的不知道我搞砸了,我开始变得有点干燥。
这是我的查询
public function getQueryByTypeAndPro($type, User $user, $archive, $filter)
{
$qb = $this->createQueryBuilder("opn");
$fullDate = DateTime::createFromFormat( "d/m/Y", date("d/m/Y"));
$or = new Orx();
if($fullDate !== false) {
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.dateCreation', ':filter'));
} else {
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.id', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.vehiculeMarque', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.clientNom', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.clientPrenom', ':filter'));
}
$or->addMultiple($textFilters);
$qb->andWhere($or);
$query = $qb
->andWhere("opn.type = :type")
->andWhere("opn.resellerId = :reseller")
->andWhere("opn.archive = :archive")
->setParameters([
"type" => $type,
"reseller" => $user->getId(),
'archive' => $archive,
'filter' => '%' . $filter . '%'
])
->orderBy("opn.dateCreation", "DESC")
->getQuery()
;
return $query;
}
和我的树枝中的过滤栏
<form action="{{ path('st_backoffice_commerce_offre') }}" method="get">
<input name="filter" type="text" value="{{ app.request.query.get('filter') }}">
<button type="submit" class="btn btn-default">{{ 'commerce.resultsoperation.display.filter'|trans }}</button>
<a href="{{ path('st_backoffice_commerce_offre') }}" class="btn btn_default">{{ 'commerce.resultsoperation.display.refresh'|trans }}</a>
</form>
好吧,我成功地以一种非常奇怪的方式进行了工作。我不知道为什么它可以工作,但是我要向您展示的代码,为所有研究工作,包括日期,名称等。
。这是答案:我删除了if
条件。所以这是代码。
public function getQueryByTypeAndPro($type, User $user, $archive, $filter)
{
$qb = $this->createQueryBuilder("opn");
$fullDate = DateTime::createFromFormat( "d/m/Y", date("d/m/Y"));
$or = new Orx();
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.dateCreation', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.id', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.vehiculeMarque', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.clientNom', ':filter'));
$textFilters[] = $qb->expr()->orx($qb->expr()->like('opn.clientPrenom', ':filter'));
$or->addMultiple($textFilters);
$qb->andWhere($or);
$query = $qb
->andWhere("opn.type = :type")
->andWhere("opn.resellerId = :reseller")
->andWhere("opn.archive = :archive")
->setParameters([
"type" => $type,
"reseller" => $user->getId(),
'archive' => $archive,
'filter' => '%' . $filter . '%'
])
->orderBy("opn.dateCreation", "DESC")
->getQuery()
;
return $query;
}
所以这实际上有效