我的实体
中有时间类型的属性/**
* @ORM\Column(type="time")
*/
protected $max_time;
但是在我的twig模板中,它返回一个DateTime类型的对象,其值为错误:
DateTime {#698 ▼
+"date": "1970-01-01 00:00:00"
+"timezone_type": 3
+"timezone": "America/Sao_Paulo"
}
在数据库中,此数据的值为03:00:00
我该如何解决?
答案 0 :(得分:1)
所以我去尝试复制这个以提供有价值的答案。但是,您提供的信息非常有限。你收到了什么错误等等......所以我要发布我所做的和它的结果。
我遗憾地发现没有问题。我最初得到的错误是它无法将DateTime转换为字符串。一旦我添加了date
过滤器,它就会停止导致错误。
实体
/**
* @var DateTime
*
* @ORM\Column(name="time", type="time")
*/
private $time;
存储在表
中mysql> select * from Product;
+----+----------+-----------+-------+----------------+----------+
| id | owner_id | name | price | description | time |
+----+----------+-----------+-------+----------------+----------+
| 1 | 1 | Prod Name | 2.123 | WHat happened? | 11:21:00 |
+----+----------+-----------+-------+----------------+----------+
1 row in set (0.00 sec)
树枝模板
<table id="example">
<thead>
<th>Name</th>
<th>Description</ht>
<th>Price</th>
<th>Action</th>
</thead>
<tbody>
{% for product in products %}
<tr>
<td>{{ product.name }}</td>
<td>{{ product.description }}</td>
<td>{{ product.price }}</td>
<td>{{ product.time|date('H:i:s') }}{{ dump(product.time) }}</td>
<td>{% if is_granted('EDIT', product) %}
<a href="{{ path('app_product_show', {'id': product.id}) }}" class="btn btn-sm">Edit</a>
{% endif %}</td>
</tr>
{% endfor %}
</tbody>
</table>
渲染
答案 1 :(得分:0)
将注释@ORM\Column(type="time")
添加到数据库中的实体属性(在MySQL中测试)类型&#34;时间&#34;将创建以存储诸如&00; 00:00:00&#39;之类的值。当doctrine获取实体时,它会将Time从数据库转换为PHP DateTime对象reference
所以要从这个对象中抽出时间,只需格式化它$entity->getTimeField()->format('H:i:s');
并且不要忘记它应该是实时价值,例如&#39; 21:19:00&#39;不是一段时间,例如,45:00:12&#39;