首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend Framework + Doctrine 2:如何将现有条目(语言)映射到新条目(用户)?

问Zend Framework + Doctrine 2:如何将现有条目(语言)映射到新条目(用户)?
EN

Stack Overflow用户
提问于 2012-01-12 08:22:20
回答 1查看 333关注 0票数 1

我将zend框架与规则2结合使用。我目前尝试做的事情如下:

使用数据库中已存在的相关默认语言保存用户。

所以我有两个模型:用户和语言。

用户模型的语言属性通过doctrine的ManyToOne选项指向语言模型的id。

因此,我在用户模型中使用以下代码来完成两个模型的映射:

代码语言:javascript
复制
/**
 * @var integer $language
 * @ManyToOne(targetEntity="Application_Model_Language", inversedBy="id", cascade={"persist"})
 */
 private $language;

外键直接在mysql数据库中更新。所以到目前为止一切都还好。

代码如下:

代码语言:javascript
复制
$defaultLanguage = $this->getUserLanguage('en');
$language = new Application_Model_Language();
$language->__set('id', $defaultLanguage);
$language->__set('name', $defaultLanguage);
$user = new Application_Model_User($username, $email, $array['password'], $array['salt']);
$user->__set('language', $language);
$user->save($user);

private function getUserLanguage($defaultLanguage){
    $registry = Zend_Registry::getInstance();
    $this->_em = $registry->entitymanager;
    $queryBuilder = $this->_em->createQueryBuilder();
    $query = $queryBuilder->add('select', 'l.id')
    ->add('from', 'Application_Model_Language l')
    ->add('where', 'l.name = ?1')
    ->setParameter(1, $defaultLanguage)
    ->getQuery();
    $result = $query->execute();  
    return $result[0]['id'];
}

因此,使用上面的代码,我首先获得名称为'en‘的语言的ID,然后尝试将其映射到用户,但实际上我不知道具体是如何映射的。

这行不通。我得到一个错误。

那么,即使它已经在数据库中(所有支持的语言列表),我如何才能与该语言相关呢?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-02-09 04:49:28

我认为你的注解有点混乱。如果您确实希望这样做,就不应该使用inversedBy=" id“,因为语言实体的id字段是它的主键,而不是用户引用。看一看documentation for ManyToOne association mapping。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8828620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档