Я новичок в Symfony и некоторое время зависал в этом вопросе. У меня есть две сущности (Mairie и Ville) с отношением многие-к-одному. Ville - импортированная таблица, предварительно заполненная информацией. В форме пользователь создает экземпляр Mairie, а с данными формы он находит Ville, к которому можно привязаться.
Проблема в том, что doctrine находит объект Ville при создании Mairie, но когда я хочу установить его для объекта Mairie, он обнуляется. Вот мой код в контроллере:
if($formMairie->isSubmitted() && $formMairie->isValid())
{
$repoMairie = $this->getDoctrine()->getRepository(Mairie::class);
$repoVilles = $this->getDoctrine()->getRepository(Villes::class);
$inseeInput = $mairie->getInsee();
$ville = $repoVilles->findOneBy(array("ville_code_commune" => $inseeInput));
dump($ville);
Этот дамп работает: он находит нужный экземпляр Ville в базе данных и возвращает объект, заполненный правильными свойствами.
$mairie->setVilles($ville);
Это не работает, свойство Ville в Mairie имеет значение null, и я не получаю ошибок при сбросе.
$mairieVille = $mairie->getVilles();
dump($mairieVille);
Возвращает ноль.
Почему объект не зарегистрирован? Я думал, что это может быть проблема SQL, так как я импортировал таблицу Ville, но я ничего не могу найти. Я использовал этот метод для связывания других сущностей, и до сих пор у меня не было проблем ... Вот мои две сущности для получения дополнительной информации (не включены методы получения и установки):
Ville :
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Villes
*
* @ORM\Table(name="villes")
* @ORM\Entity
*/
class Villes
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="ville_id", type="integer", nullable=false)
*/
private $ville_id;
/**
* @var string|null
*
* @ORM\Column(name="ville_departement", type="string", length=3, nullable=true)
*/
private $ville_departement;
/**
* @var string|null
*
* @ORM\Column(name="ville_slug", type="string", length=255, nullable=true)
*/
private $ville_slug;
/**
* @var string|null
*
* @ORM\Column(name="ville_nom", type="string", length=45, nullable=true)
*/
private $ville_nom;
/**
* @var string|null
*
* @ORM\Column(name="ville_nom_simple", type="string", length=45, nullable=true)
*/
private $ville_nom_simple;
/**
* @var string|null
*
* @ORM\Column(name="ville_nom_reel", type="string", length=45, nullable=true)
*/
private $ville_nom_reel;
/**
* @var string|null
*
* @ORM\Column(name="ville_nom_soundex", type="string", length=20, nullable=true)
*/
private $ville_nom_soundex;
/**
* @var string|null
*
* @ORM\Column(name="ville_nom_methaphone", type="string", length=22, nullable=true)
*/
private $ville_nom_methaphone;
/**
* @var string|null
*
* @ORM\Column(name="ville_code_postal", type="string", length=255, nullable=true)
*/
private $ville_code_postal;
/**
* @var string|null
*
* @ORM\Column(name="ville_commune", type="string", length=3, nullable=true)
*/
private $ville_commune;
/**
* @var string
*
* @ORM\Column(name="ville_code_commune", type="string", length=5, nullable=false)
*/
private $ville_code_commune;
/**
* @var int|null
*
* @ORM\Column(name="ville_arrondissement", type="integer", nullable=true)
*/
private $ville_arrondissement;
/**
* @var string|null
*
* @ORM\Column(name="ville_canton", type="string", length=4, nullable=true)
*/
private $ville_canton;
/**
* @var int|null
*
* @ORM\Column(name="ville_amdi", type="integer", nullable=true)
*/
private $ville_amdi;
/**
* @var int|null
*
* @ORM\Column(name="ville_population_2010", type="integer", nullable=true)
*/
private $ville_population_2010;
/**
* @var int|null
*
* @ORM\Column(name="ville_population_1999", type="integer", nullable=true)
*/
private $ville_population_1999;
/**
* @var int|null
*
* @ORM\Column(name="ville_population_2012", type="integer", nullable=true)
*/
private $ville_population_2012;
/**
* @var int|null
*
* @ORM\Column(name="ville_densite_2010", type="integer", nullable=true)
*/
private $ville_densite_2010;
/**
* @var float|null
*
* @ORM\Column(name="ville_surface", type="float", precision=10, scale=0, nullable=true)
*/
private $ville_surface;
/**
* @var float|null
*
* @ORM\Column(name="ville_longitude_deg", type="float", precision=10, scale=0, nullable=true)
*/
private $ville_longitude_deg;
/**
* @var float|null
*
* @ORM\Column(name="ville_latitude_deg", type="float", precision=10, scale=0, nullable=true)
*/
private $ville_latitude_deg;
/**
* @var string|null
*
* @ORM\Column(name="ville_longitude_grd", type="string", length=9, nullable=true)
*/
private $ville_longitude_grd;
/**
* @var string|null
*
* @ORM\Column(name="ville_latitude_grd", type="string", length=8, nullable=true)
*/
private $ville_latitude_grd;
/**
* @var string|null
*
* @ORM\Column(name="ville_longitude_dms", type="string", length=9, nullable=true)
*/
private $ville_longitude_dms;
/**
* @var string|null
*
* @ORM\Column(name="ville_latitude_dms", type="string", length=8, nullable=true)
*/
private $ville_latitude_dms;
/**
* @var int|null
*
* @ORM\Column(name="ville_zmin", type="integer", nullable=true)
*/
private $ville_zmin;
/**
* @var int|null
*
* @ORM\Column(name="ville_zmax", type="integer", nullable=true)
*/
private $ville_zmax;
Mairie
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Mairie
*
* @ORM\Table(name="mairie", uniqueConstraints={@ORM\UniqueConstraint(name="UNIQ_3946A254A73F0036", columns={"ville_id"})}, indexes={@ORM\Index(name="IDX_3946A254CF94313", columns={"office_tourisme_id"})})
* @ORM\Entity
*/
class Mairie
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="mairie_nom_touristique", type="string", length=255, nullable=true)
*/
private $mairieNomTouristique;
/**
* @var string|null
*
* @ORM\Column(name="mairie_descriptif_1", type="string", length=255, nullable=true)
*/
private $mairieDescriptif1;
/**
* @var string|null
*
* @ORM\Column(name="mairie_descriptif_2", type="string", length=255, nullable=true)
*/
private $mairieDescriptif2;
/**
* @var string|null
*
* @ORM\Column(name="mairie_epci_rattachement", type="string", length=255, nullable=true)
*/
private $mairieEpciRattachement;
/**
* @var string
*
* @ORM\Column(name="mairie_maire_nom", type="string", length=255, nullable=false)
*/
private $mairieMaireNom;
/**
* @var string
*
* @ORM\Column(name="mairie_maire_prenom", type="string", length=255, nullable=false)
*/
private $mairieMairePrenom;
/**
* @var string|null
*
* @ORM\Column(name="mairie_adjoint_nom", type="string", length=255, nullable=true)
*/
private $mairieAdjointNom;
/**
* @var string|null
*
* @ORM\Column(name="mairie_adjoint_prenom", type="string", length=255, nullable=true)
*/
private $mairieAdjointPrenom;
/**
* @var string|null
*
* @ORM\Column(name="mairie_contact_nom", type="string", length=255, nullable=true)
*/
private $mairieContactNom;
/**
* @var string|null
*
* @ORM\Column(name="mairie_contact_prenom", type="string", length=255, nullable=true)
*/
private $mairieContactPrenom;
/**
* @var int
*
* @ORM\Column(name="mairie_telephone_contact", type="integer", nullable=false)
*/
private $mairieTelephoneContact;
/**
* @var string
*
* @ORM\Column(name="mairie_email_contact", type="string", length=255, nullable=false)
*/
private $mairieEmailContact;
/**
* @var string
*
* @ORM\Column(name="mairie_latitude", type="string", length=255, nullable=false)
*/
private $mairieLatitude;
/**
* @var string
*
* @ORM\Column(name="mairie_longitude", type="string", length=255, nullable=false)
*/
private $mairieLongitude;
/**
* @var string|null
*
* @ORM\Column(name="mairie_photo_1", type="string", length=255, nullable=true)
*/
private $mairiePhoto1;
/**
* @var string|null
*
* @ORM\Column(name="mairie_photo_2", type="string", length=255, nullable=true)
*/
private $mairiePhoto2;
/**
* @var string|null
*
* @ORM\Column(name="mairie_photo_3", type="string", length=255, nullable=true)
*/
private $mairiePhoto3;
/**
* @var string|null
*
* @ORM\Column(name="mairie_photo_4", type="string", length=255, nullable=true)
*/
private $mairiePhoto4;
/**
* @var string|null
*
* @ORM\Column(name="mairie_taxe_sejour_gestionnaire", type="string", length=255, nullable=true)
*/
private $mairieTaxeSejourGestionnaire;
/**
* @var string|null
*
* @ORM\Column(name="mairie_taxe_sejour_bareme", type="string", length=255, nullable=true)
*/
private $mairieTaxeSejourBareme;
/**
* @var string|null
*
* @ORM\Column(name="mairie_sejour_lien", type="string", length=255, nullable=true)
*/
private $mairieSejourLien;
/**
* @var string|null
*
* @ORM\Column(name="mairie_contact_nom_prenom", type="string", length=255, nullable=true)
*/
private $mairieContactNomPrenom;
/**
* @var string|null
*
* @ORM\Column(name="mairie_de_telephone", type="text", length=255, nullable=true)
*/
private $mairieDeTelephone;
/**
* @var string|null
*
* @ORM\Column(name="mairie_sejour_email", type="string", length=255, nullable=true)
*/
private $mairieSejourEmail;
/**
* @var string|null
*
* @ORM\Column(name="mairie_rappel_texte", type="string", length=255, nullable=true)
*/
private $mairieRappelTexte;
/**
* @var string|null
*
* @ORM\Column(name="mairie_rappel_lien", type="string", length=255, nullable=true)
*/
private $mairieRappelLien;
/**
* @var string|null
*
* @ORM\Column(name="mairie_logo", type="string", length=255, nullable=true)
*/
private $mairieLogo;
/**
* @var string|null
*
* @ORM\Column(name="mairie_logo_2", type="string", length=255, nullable=true)
*/
private $mairieLogo2;
/**
* @var \DateTime
*
* @ORM\Column(name="mairie_date_inscription", type="datetime", nullable=false)
*/
private $mairieDateInscription;
/**
* @var string|null
*
* @ORM\Column(name="mairie_tampon", type="string", length=255, nullable=true)
*/
private $mairieTampon;
/**
* @var string|null
*
* @ORM\Column(name="mairie_maire_signature", type="string", length=255, nullable=true)
*/
private $mairieMaireSignature;
/**
* @var string
*
* @ORM\Column(name="mairie_slug", type="string", length=255, nullable=false)
*/
private $mairieSlug;
/**
* @var string
*
* @ORM\Column(name="insee", type="string", length=255, nullable=false)
*/
private $insee;
/**
* @var string
*
* @ORM\Column(name="mairie_adresse", type="string", length=255, nullable=false)
*/
private $mairieAdresse;
/**
* @var string|null
*
* @ORM\Column(name="mairie_complement_adresse", type="string", length=255, nullable=true)
*/
private $mairieComplementAdresse;
/**
* @var string
*
* @ORM\Column(name="mairie_postal_code", type="string", length=10, nullable=false)
*/
private $mairiePostalCode;
/**
* @var string
*
* @ORM\Column(name="mairie_commune", type="string", length=255, nullable=false)
*/
private $mairieCommune;
/**
* @var \Villes
*
* @ORM\ManyToOne(targetEntity="Villes")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ville_id", referencedColumnName="id")
* })
*/
private $ville;
/**
* @var \OfficeTourisme
*
* @ORM\ManyToOne(targetEntity="OfficeTourisme")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="office_tourisme_id", referencedColumnName="id")
* })
*/
private $officeTourisme;
public function __construct()
{
$this->user_id_heb = new ArrayCollection();
$this->hebergements = new ArrayCollection();
$this->mairie_id_user = new ArrayCollection();
$this->user = new ArrayCollection();
$this->hebergement = new ArrayCollection();
}
public function getVilles(): ?Villes
{
return $this->ville;
}
public function setVilles(?Villes $villes): self
{
$this->villes = $villes;
return $this;
}