从实体类访问存储库

时间:2012-07-06 09:47:33

标签: symfony repository entity

我有以下代码:

    /**
 * Callback transform array of checkboxes to string and store it in database
 *
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function onPreUpdate()
{
    if($this->id == 13)
    {
        $data = implode('-', $this->value);
        $this->setValue($data);
    }
}

/**
 * Callback retrieved data from database transform to string to fill our field
 *
 * @ORM\PostLoad()
 */
public function onPostLoad()
{
    if($this->id == 13)
    {
        $data = (strstr($this->value, '-') !== false) ? explode('-', $this->value) : array($this->value);
        $this->setValue($data);
    }
}
当我从数据库中检索数据并将它们放入复选框小部件时,我必须这样做才能在我添加/更新数据时转换字符串中的复选框数组。 但现在是静态的id,我需要检查我的输入类型,如果是复选框运行上面的代码... 我不能这样做:

$this->getDoctrine()->getRepository();

在我的实体类中,因为它不起作用,对于数据映射器来说不是一个好主意...所以我该怎么做呢?

感谢所有回复并抱歉我的英文不好

1 个答案:

答案 0 :(得分:0)

这不是编程的好方法 如果你想在数据库之前或之后持久化时转换数据,那么你可以使用symfony2 doctrine Data Transformer