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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 40 :
=== Exemple ===
Voici par exemple plusieurs types d'attributs :
 
<syntaxhighlight lang=php>
/**
Ligne 47 ⟶ 48 :
class Word
{
 
/**
* @#[ORM\Id]
* @#[ORM\Column(name=": 'id"', type=": 'integer"', nullable=: false)]
* @#[ORM\GeneratedValue(strategy=": 'IDENTITY"')]
*/
private $id;
 
* @#[ORM\Column(name=": 'spelling"', type=": 'string", length=255', nullable=: false)]
/**
* @ORM\Column(name="spelling", type="string", length=255, nullable=false)
*/
private $spelling;
 
* @#[ORM\Column(name=": 'pronunciation"', type=": 'string", length=255', nullable=: true)]
/**
* @ORM\Column(name="pronunciation", type="string", length=255, nullable=true)
*/
private $pronunciation;
 
* @#[ORM\ManyToOne(targetEntity=": 'Language", inversedBy="words"')]
/**
* @#[ORM\JoinColumn(name=": 'language_id"', referencedColumnName=": 'id"', nullable: false)]
* @var Language
private ?Language $language = null;
*
* @ORM\ManyToOne(targetEntity="Language", inversedBy="words")
* @ORM\JoinColumn(name="language_id", referencedColumnName="id")
*/
protected $language;
 
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Homophon", mappedBy="word", cascade={"persist", "remove"})
*/
private $homophons;
 
#[ORM\OneToMany(targetEntity: Homophon::class, mappedBy: 'word', cascade: ['persist', 'remove'], orphanRemoval: true)]
private ArrayCollection $homophons;
 
public function __construct()
Ligne 129 ⟶ 116 :
return $this;
}
}
</syntaxhighlight>
 
==== Exemple en PHP < 8 ===
On utilise les annotations au lieu des attributs :
<syntaxhighlight lang=php>
/**
* @ORM\Entity
* @ORM\Table(name="word")
*/
class Word
{
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
 
/**
* @ORM\Column(name="spelling", type="string", length=255, nullable=false)
*/
private $spelling;
 
/**
* @ORM\Column(name="pronunciation", type="string", length=255, nullable=true)
*/
private $pronunciation;
 
/**
* @var Language
*
* @ORM\ManyToOne(targetEntity="Language", inversedBy="words")
* @ORM\JoinColumn(name="language_id", referencedColumnName="id")
*/
protected $language;
 
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Homophon", mappedBy="word", cascade={"persist", "remove"})
*/
private $homophons;
 
//...
}
</syntaxhighlight>