« Programmation PHP avec Symfony/Doctrine » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 48 :
 
#[ORM\Id]
#[ORM\Column(name: 'id', type: 'integer', nullable: false, options=['unsigned'])]
#[ORM\GeneratedValue(strategy: 'IDENTITY')]
private $id;
Ligne 117 :
</syntaxhighlight>
 
==== {{(|Exemple en PHP < 8 ====}}
On utilise les annotations au lieu des attributs :
<syntaxhighlight lang=php>
Ligne 128 :
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false, options={"unsigned": true})
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
Ligne 161 :
}
</syntaxhighlight>
{{)}}
 
On voit ici que la table "word" possède trois champs : "id" (clé primaire), "pronunciation" (chaine de caractère) et "language_id" (clé étrangère vers la table "language"). Doctrine stockera automatiquement l'id de la table "language" dans la troisième colonne quand on associera une entité "Language" à une "Word" avec <code>$word->setLanguage($language)</code>.
Ligne 178 ⟶ 179 :
{{remarque|1=L'annotation <code>@ORM\Table(name="word")</code> était facultative dans cet exemple, car le nom de la table peut être déduit du nom de l'entité.}}
 
L'annotation <code>@ORM\Table</code> peut servir à définir des clés composites :
<syntaxhighlight lang=php>
* @ORM\Table(uniqueConstraints={