【问题标题】:How to set Doctrine Auto Increment Starting Value @ORM\GeneratedValue[starts with 100] using symfony2如何使用 symfony2 设置 Doctrine Auto Increment 起始值@ORM\GeneratedValue[starts with 100]
【发布时间】:2017-11-16 17:58:12
【问题描述】:

如何设置 Auto Incremented 的起始值,例如 100,101.... 我的代码是

/**
 * @ORM\Name
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="name", initialValue=100)
 * @ORM\Column(type="integer")
 */
protected $name;

在尝试时我遇到了这样的错误

[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Doctrine\ORM\Mapping\Name" in property 
Epita\CrmBundle\Entity\CandidateAnalysisCrm::$name does not exist, or could 
not be auto-loaded.

请帮助我。感谢提前

我的实体是:

namespace Epita\CrmBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

 /**
  * category
  *
  * @ORM\Table(name="candidateanalysiscrm")
  * @ORM\Entity
  */
  class CandidateAnalysisCrm {
/**
 * @ORM\Id
 * @ORM\Column(type = "integer", name= "id")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
public $id;
/**
 * @ORM\Column(type="integer", name="applicationinprogress",length=10, 
 nullable=true) 
 */
protected $applicationinprogress;
/**
 * @ORM\Name
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="name", initialValue=100)
 * @ORM\Column(name="name", type="integer")
 */
protected $name;
}

【问题讨论】:

    标签: symfony doctrine


    【解决方案1】:

    我不确定,但我认为 ORM\Name 不存在。

    你必须写:

    * @ORM\Column(name="column_name", type="string")
    

    【讨论】:

    • 你能看到上面的帖子我的实体类很长我粘贴了一些字段
    【解决方案2】:

    这里有几个问题:

    首先,如前所述,没有@Name doctrine annotation

    其次,GeneratedValueannotation 仅适用于使用 @Id annotation 注释的属性。

    来自文档

    指定使用哪种策略为由@Id 注释的实例变量生成标识符。此注解是可选的,只有与@Id 结合使用时才有意义。

    如果没有使用@Id 指定此注解,则默认使用 NONE 策略。

    要修复它,请将您的 $name 属性注释更改为:

    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     * @ORM\SequenceGenerator(sequenceName="name", initialValue=100)
     * @ORM\Column(name="name", type="integer")
     */
    protected $name;
    }
    

    如果您无法选择使用$name 属性作为标识符,那么收听doctrine events(例如prePersist)可能是解决您问题的替代解决方案。但这是一个完全不同的问题。

    【讨论】:

    • 非常感谢您的支持
    • 我终于明白了,mysql 不支持这个,感谢您的宝贵支持
    猜你喜欢
    • 2015-10-30
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2015-01-19
    • 2013-09-09
    • 2013-12-10
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多