1
votes

I'm pulling a lot of data to cache locally, the data i pull is in json format and has along with it Unique Id's for each record.

Is there a way i can tell doctrine to use this as the id for the table? I'm only going to be populating these tables with data from my json, i wont be adding any new records from other sources only from my json pull.

is it possible to get doctrine to use a field from my json pull as the primary key?.

when i use doctrine:generate:entity it automatically adds an id field I would ideally like to get rid of this and use the uniqueID column from my data pull. ($teamKey)

say for example this is my entity

/**
 * 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 ...........
*/

is it just a case of deleting the existing $id property and modifying my $teamKey property to:

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

Is it more complex than that or not possible? does the unique id field for doctrine have to be called $id ?

1

1 Answers

1
votes

Theoretically, it depends on your DB. But, generally speaking, any DB type should let you set any ID you want.

So, you can always do $entity->setId() any time you want, and persist it with that ID, with no problem.