Мне нужно заполнить таблицу в TWIG данными из базы данных. Все хорошо, за исключением этого:
Мне нужно иметь столбец со свойством DATEDIFF, чтобы получить количество дней.
СЕГОДНЯ-dateFromDateBase
Вопрос:
Как получить количество дней в петле в ветке?
вот моя веточка:
<table>
<thead>
<tr>
<form action="" method="post" {{ form_enctype(searchform) }} class="form-index-permits">
<td>L.p </td>
<td>ID PRZEPUSTKI {{ form_widget(searchform.PermitId) }}</td>
<td>Name{{ form_widget(searchform.Permitname) }}</td>
<td>Surname {{ form_widget(searchform.Permitsurname) }}</td>
<td>Company {{ form_widget(searchform.Company) }}</td>
<td>GW {{ form_widget(searchform.Contractor) }}</td>
<td>Dayleft {{ form_widget(searchform.Dayleft) }}</td>
<td>End date {{ form_widget(searchform.date, { 'attr': {'class': 'datepicker'} }) }}</td>
</form>
</tr>
</thead>
{% for permit in permitcollection %}
<tbody>
<td>{{ loop.index }}</td>
<td>{{ permit.getPermitid()|number_format(0, '.', ' ') }}</td>
<td>{{ permit.getPermitname() }}</td>
<td>{{ permit.getPermitsurname() }}</td>
<td>{{ permit.getPermitsCompany().getName() }}</td>
<td>{{ permit.getPermitsContractor().getName() }}</td>
<td> HERE I WANT TO DISPLAY DAYS LEFT</td>
<td>{{ permit.getExpirationdate()|date('Y-m-d') }}</td>
</tbody>
{% endfor %}
</table>
Возможно ли что-то подобное?
{{ permit.getExpirationdate()|date('Y-m-d') - "now"|date('Y-m-d') }}
Первое решение (рекомендуется) «Использовать существующую библиотеку»:
Вы можете использовать KnpTimeBundle
В Веточке:
Это сравнить с текущей датой:
{# Returns something like "3 minutes ago" #}
{{ time_diff(permit.expirationDate) }}
Это сравнить с другой датой:
{# Returns something like "3 minutes ago" #}
{{ time_diff(permit.expirationDate, anotherDate) }}
Второе решение «Сделай сам»:
Сделайте diff с помощью функции php:
$calcFrom = permit.getExpirationdate()
$now = new \DateTime('now');
$now->diff($calcFrom)->format("%a")
И сделать его доступным через Расширение ветки или непосредственно во вспомогательном методе в объекте.
Другое возможное решение это написать зарегистрироваться пользовательская функция DQL делать работу в хранилище
Надеюсь это поможет
Других решений пока нет …