[英]Comparing dates results with Doctrine
我用表單生成器編寫了一個api調用,它創建了兩個日期字段。 這個想法是選擇兩個日期,並從該日期范圍內的數據分貝返回結果。
我找不到問題所在,但我認為查詢生成器中的語法不正確。
我沒有任何錯誤,只是一個空數組。
這是來自服務的api調用
public function getTransaction()
{
$result = $this->getTransactionRepository()
->createQueryBuilder('a')
->select('a')
->where('a.date >= :from')
->andWhere('a.date <= :to')
->setParameter('from', $date->format('Y-m-d H:i:s'))
->setParameter('to', $date->format('Y-m-d H:i:s'))
->orderBy('p.id')
->getQuery()
->getArrayResult();
return $result;
}
我的控制器
$form = $this->createFormBuilder()
->add('dateFrom', DateType::class, array(
'widget' => 'single_text',
'attr' => array(
'dateFrom' => (new \DateTime())->format('Y-m-d'),
)))
->add('dateTo', DateType::class, array(
'widget' => 'single_text',
'attr' => array(
'dateTo' => (new \DateTime())->format('Y-m-d'),
)))
->add('submit', SubmitType::class, array('label' => 'Send', 'attr' => [
'class' => 'btn-link form-btn'
]))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$transactions = $this->get('app')->getTransaction();
}
return $this->render('default/finance.html.twig',
array('form' => $form->createView(), 't' => $t)
);
}
和我的樹枝視圖
<tbody>
<tr>
<th>ID</th>
<th>User</th>
<th>Info</th>
<th>Name</th>
</tr>
{% for a in t %}
<tr>
<td>{{ a.id }}</td>
<td>{{ a.user }}</td>
<td>{{ a.info }}</td>
<td>{{ a.name }}</td>
</tr>
{% endfor %}
</tbody>`
首先,您應該指定遇到的錯誤。
無論如何,我不確定,但是由於您使用的是SELECT AS
,因此我會嘗試在查詢生成器p.date
所有p.date
替換為Date
。 另外, DATE
是MySQL中的保留關鍵字,您應該用其他內容替換它。
從代碼的外觀看,您的getTransaction
回購函數未收到應接收的$to
和$from
DateTime對象。 像這樣更新該函數:
public function getTransaction(DateTime $from, DateTime $to) : Collection
{
$result = $this->getTransactionRepository()
->createQueryBuilder('a')
->select('a')
->where('a.date >= :from')
->andWhere('a.date <= :to')
->setParameter('from', $from->format('Y-m-d H:i:s'))
->setParameter('to', $to->format('Y-m-d H:i:s'))
->orderBy('p.id')
->getQuery()
->getArrayResult();
return $result;
}
並且您的呼叫應包括現在所需的參數,如下所示:
$transactions = $this->get('app')->getTransaction($from, $to);
我不太確定FormBuilder
什么可用,因此猜測完整的函數調用是:
$transactions = $this->get('app')->getTransaction(
$form->get('dateFrom')->getValue(),
$form->get('dateTo')->getValue(),
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.