Symfony2自定义原则类型



我需要为我的数据库创建一个新的Symfony2/Doctrine类型我们将其命名为dbmd5。我已经有一个工作的自定义函数在mssql server 2008

myfunc(arg1, arg2)

现在我需要用两个参数来表示我的实体中的不同列来自动调用doctrine。比如电子邮件和用户名。我需要脚本将其命名为

myfunc(email, username);

如何将"username"链接到我给"email"的这个类型

实体中的列声明

/**
 * @ORMColumn(type="dbmd5")
 */
protected $email;

我还创建了自定义类型并将其添加到Types池中我的convertToDatabaseValueSQL:

public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform) {
    $usernameColumn = '';//how do i get the username value>
    $value = sprintf('[dbo].[myfunc](%s, %s)', $sqlExpr, $usernameColumn);
    return $value;
}

我的解决方案

添加到实体:

protected static $stored = array();
public function store($name)
{
    self::$stored[$name] = $this;
}
public static function stored($name)
{
    return self::$stored[$name];
}

在控制器中初始化实体

$entity = new Entity();

在实体管理器中持久化实体之前,存储数据

   $entity->store('storeName');

在dbmd5类型声明中添加

public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform) {        
    $entity = Entity::stored('storeName');        
    return sprintf("[dbo].[myfunc](?, '".addslashes($entity->username)."')", $sqlExpr);
} 

它非常乱,它只满足我的需要。如果你给我有效的建议,我愿意改进我的代码。

问好,

最新更新