【问题标题】:symfony2 doctrine onetoone complete examplesymfony2 学说 onetoone 完整示例
【发布时间】:2023-04-06 20:29:02
【问题描述】:

我尝试从示例中建立一对一关系 - http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html#use-case-2-simple-derived-identity

这是第二次尝试,第一次在这里symfony 2 doctrine relation onetoone

地址

<?php
/**
 * Created by PhpStorm.
 * User: grek
 * Date: 18.12.13
 * Time: 16:33
 */

namespace Miejsce\ObiektyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Adres {

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @ORM\Column(type="string", length=64, nullable=true)
     */
    public $street;


    /**
     * @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\User") */
    private $user;




}

用户

    <?php
/**
 * Created by PhpStorm.
 * User: grek
 * Date: 18.12.13
 * Time: 16:33
 */

namespace Miejsce\ObiektyBundle\Entity;


use Doctrine\ORM\Mapping as ORM;


/**
 * @ORM\Entity
 */
class User {


    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @ORM\Column(type="string", length=64, nullable=true)
     */
    public $name;



    /**
     * @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\Adres")
     */
    private $adres;


}

并且有:php app/console 学说:schema:update --force

php 应用程序/控制台原则:schema:update --force

[Doctrine\Common\Annotations\AnnotationException]
[语义错误] 属性 Miejsce\ObiektyBundle\Entity\Adres::$user 中的注释“@Doctrine\ORM\Mapping”不存在
存在,或无法自动加载。
那么我在哪里可以出错?

  • 语法错误 - 我有@ORM/OneToOne 但现在需要@ORM\OneToOne 可以正常工作! :)

【问题讨论】:

  • 这篇文章的意义何在?

标签: php symfony doctrine-orm doctrine


【解决方案1】:

答案在错误信息中。看看你的两个班级有什么不同。

/**
 * @Entity
 */

对比:

/**
 * @ORM\Entity
 */

所以更新给你错误的那个。

编辑

当您使用use Doctrine\ORM\Mapping as ORM; 导入Doctrine 的注解时,您需要以@ORM\ 开始所有这些注解。注释阅读器会知道@ORM\Entity 实际上意味着@Doctrine\ORM\Mapping\Entity,这是定义该注释的类。

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解您的要求,但您的注释设置不正确。

    /**
     * @Entity
    

    应该变成

    /**
     * @ORM\Entity
    

    还有

    /**
     * @Id @Column...
    

    应该变成

    /**
     * @ORM\Id
     * @ORM\Column...
    

    @OneToOne 相同,应该是 @ORM\OneToOne

    基本上,您没有正确地为注释添加前缀。你有use Doctrine\ORM\Mapping as ORM;,但你没有正确使用它。为您的注释添加前缀,这样您就可以开始了。

    【讨论】:

    • 我从教义文档link得到这个语法 - 我不能使用教义文档?
    • 你没有使用纯教义。您在 Symfony 内部使用教义。 @ORM 在那里,因此您不必包含多个 use 语句。它简化了事情。如果您想遵循教义文档而不是 Symfony 文档,请继续,但您不能指望复制和粘贴并使其正常工作。
    • 好的,现在明白了 - 这部分但仍然不明白为什么我不能像示例中那样设置 onetoone 关系
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多