主义2大写第一封信

时间:2014-09-10 11:07:40

标签: mysql doctrine-orm zend-framework2

我需要在使用Doctrine2中的Select查询获取数据时用大写字母开头。

我尝试过UCASE,但在Doctrine 2中不支持。

还有其他方法可以将Doctrine2中的第一个字母大写吗?

2 个答案:

答案 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