我需要为我的数据库创建一个新的Symfony2 / Doctrine类型 我们称之为dbmd5。我已经在mssql server 2008中有一个可用的自定义函数
myfunc(arg1, arg2)
现在我需要使用代表我实体中不同列的两个参数自动调用doctrine。就像电子邮件和用户名一样。 我需要脚本来调用它
myfunc(email, username);
我如何将“用户名”链接到我给“电子邮件”
这种类型实体中的列声明
/**
* @ORM\Column(type="dbmd5")
*/
protected $email;
我还创建了自定义类型并将其添加到了类型池中 我的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;
}
答案 0 :(得分:0)
我的溶解
添加到实体:
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);
}
它非常凌乱,只能满足我的需求。 如果你给我有效的建议,我愿意改进我的代码。
致以最诚挚的问候,