我确信这很简单,但我找不到如何做的解释。我有一个表格要求用户的名字(除其他外)。在我插入记录之前,我想在名称字段上使用ucwords。
当我插入记录时,我该怎么做...
$em = $this->getDoctrine()->getManager();
$em->persist($profile);
$em->flush();
答案 0 :(得分:3)
您可以在多个地方执行此操作。
在您的实体中
[Minimum(72, ErrorMessage = "Please enter 6 years address history")]
public int TotalAddressHistoryInMonths
{
get
{
int totalMonths = CurrentAddress?.Duration?.TotalPeriodInMonths ?? 0;
if (PreviousAddresses != null)
{
foreach (ResidencyInputViewModel residency in PreviousAddresses)
{
totalMonths += residency?.Duration?.TotalPeriodInMonths ?? 0;
}
}
return totalMonths;
}
}
以您的形式
classs Profile
{
//...
public function setName($name)
{
$this->name = ucwords($name);
}
}
还有其他地方,例如一个Entity Listener或形式的事件,但实际上我会先看一下这些地方。如果一般要求该名称应该是大写的,我会选择setter以确保它也以这种方式存储。如果您不确定所有数据是否仍然存在,您也可以将它放在实体getter中,但即使这样,我也会考虑确保修复格式错误的数据,并确保以您的格式保存希望,除非有令人信服的理由反对它。
我不会使用评论中建议的组合,因为当有人忘记用ucwords调用setter时,这会导致数据不一致。