来自另一个来源的 Symfony 2 Doctrine 唯一 ID

Symfony 2 Doctrine unique id from another source

我正在提取大量数据以在本地缓存,我提取的数据采用 json 格式,并且每条记录都有唯一 ID。

有什么方法可以让 doctrine 使用这个作为 table 的 ID? 我只会用我的 json 中的数据填充这些 table,我不会仅从我的 json 拉取中添加来自其他来源的任何新记录。

是否可以从我的 json pull 中获取一个字段作为主键?

当我use doctrine:generate:entity 它会自动添加一个 id 字段我希望摆脱它并使用我的数据拉取中的 uniqueID 列。 ($teamKey)

比如说这是我的实体

/**
 * Team
 *
 * @ORM\Table("fp_team)
 * @ORM\Entity(repositoryClass="FantasyPro\DataBundle\Entity\TeamRepository")
 */
class Team
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="teamKey", type="string", length=50, nullable=false)
     */
    private $teamKey;

/** 
     more properties ...........
*/

是否只是删除现有的$id属性并将我的$teamKey属性修改为:

/**
         * @var string
         * @ORM\Id
         * @ORM\Column(name="teamKey", type="string", length=50, unique=true, nullable=false)
         */
         private $teamKey;

比这更复杂还是不可能? 学说的唯一 ID 字段是否必须称为 $id

理论上,这取决于您的数据库。但是,一般来说,任何数据库类型都应该允许您设置您想要的任何 ID。

因此,您随时可以随时执行 $entity->setId(),并使用该 ID 保留它,没有问题。