J'ai des problèmes avec les clés étrangères en doctrine. J'ai une table "User" et une table "Orders". Maintenant, je veux avoir une clé étrangère de userID dans la table des commandes à l'id dans la table des utilisateurs. Les commandes entité ressemble:Doctrine create foreign key
<?php
namespace Application\TestBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="Orders",
* options={"collate"="utf8_general_ci",
* "charset"="utf8",
* "engine"="InnoDB"
* }
*)
* @ORM\Entity(repositoryClass="Application\TestBundle\Entity\OrdersRepository")
*/
class Orders
{
/**
* @var integer
*
* @ORM\Column(
* name="id",
* unique=true,
* type="integer",
* options={"unsigned"=true}
*)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(
* name="userID",
* type="integer",
* nullable=false,
* options={"unsigned"=true}
*)
* @ORM\OneToOne(targetEntity="User")
* @ORM\JoinColumn(name="userID", referencedColumnName="id")
*/
private $userID;
// ...
}
L'entité utilisateur ressemble à:
<?php
namespace Application\TestBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="User",
* options={"collate"="utf8_general_ci",
* "charset"="utf8",
* "engine"="InnoDB"
* }
*)
* @ORM\Entity(repositoryClass="Application\TestBundle\Entity\UserRepository")
*/
class User
{
/**
* @var integer
*
* @ORM\Column(
* name="id",
* unique=true,
* type="integer",
* options={"unsigned"=true}
*)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
// ...
}
Malheureusement aucune clé étrangère sera mis. Ce n'est pas dans la requête SQL. Qu'est-ce que je fais mal?
Comment persistez-vous votre entité? Pouvez-vous coller la partie * pertinente * de votre action de contrôleur? –
voir ma question mise à jour – user3631654