我需要在使用Doctrine2中的Select查询获取数据时用大写字母开头。
我尝试过UCASE,但在Doctrine 2中不支持。
还有其他方法可以将Doctrine2中的第一个字母大写吗?
答案 0 :(得分:2)
如果不真正需要在数据库级别执行此操作,则可以使用Lifecycle Callbacks来实现相同的效果。
例如,在您的实体中,编写一个这样的后加载方法:
<?php
namespace MyApp\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks <-- NOTICE THIS ANNOTATION
*/
class MyEntity
{
/**
* @ORM\PostLoad <-- AND THIS
*/
public function capitalizeField()
{
$this->field = mb_ucfirst($this->field);
}
}
两年后更新:
这种方法解决了这个问题。无论如何,在类似的情况下,如果可能的话,我宁愿在将数据写入数据库之前更改案例。我的意思是生命周期回调不是免费的。另一个选择是更改演示/视图层中的大小写。今天,利用整个事件机制来改变单个值的情况对我来说听起来有点过分了。
答案 1 :(得分:0)
在MySQL中执行此操作,例如
SELECT CONCAT(UPPER(LEFT(the_field, 1)),LOWER(SUBSTRING(the_field, 2))) FROM the_table
或者如果您不想改变字段,请删除第一个字母:
SELECT CONCAT(UPPER(LEFT(the_field, 1)),SUBSTRING(the_field, 2)) FROM the_table