Pb de persistence SF2/Doctne2
Bonjour aux spécialistes sf2/Dtne 2, j'ai un pblme que je n'arrive pas à résoudre. Je voudrais votre avis. j'obtiens cet erreur lors de la sauvergarde d'un objet et de ses dépendances
Citation:
Property "generalParameters" is not public in class "App\BackofficeBundle\Entity\Culture". Maybe you should create the method "setsetGeneralParameters()"
la problematique est la suivante:
dans l'entité Culture on trouve ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
/**
* @var GeneralParameters
*
* @ORM\ManyToMany(targetEntity="GeneralParameters", inversedBy="culture", cascade={"persist", "remove"})
* @ORM\JoinTable(name="culture_document",
* joinColumns={
* @ORM\JoinColumn(name="culture_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="general_parameters_id", referencedColumnName="id")
* }
* )
*/
private $generalParameters;
public function __construct()
{
$this->generalParameters = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add generalParameters
*
* @param App\BackofficeBundle\Entity\GeneralParameters $generalParameters
*/
public function addGeneralParameters(\App\BackofficeBundle\Entity\GeneralParameters $generalParameters)
{
$this->generalParameters[] = $generalParameters;
} |
ensuite dans l'entité que je tente de persisté après soumission du formulaire on trouve ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
/**
* @var Culture
*
* @ORM\ManyToMany(targetEntity="Culture", mappedBy="generalParameters", cascade={"persist", "remove"})
*/
private $culture;
public function __construct()
{
$this->culture = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add culture
*
* @param App\BackofficeBundle\Entity\Culture $culture
*/
public function addCulture(\App\BackofficeBundle\Entity\Culture $culture)
{
$this->culture[] = $culture;
} |
et dans le controleur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| $generalParametersForm = new GeneralParametersType();
$generalParameter = new GeneralParameters();
$culture = new Culture();
$culture->addGeneralParameters($generalParameter);
$generalParameter->addCulture($culture);
$form = $this->get('form.factory')->create($generalParametersForm);
$form->setData($generalParameter);
$request = $this->get('request');
if ($request->getMethod() === 'POST') {
$form->bindRequest($request);
if ($form->isValid()){
$em = $this->getDoctrine()->getEntityManager();
$em->persist($form->getData());
$em->flush();
return $this->redirect($this->generateUrl('generalparameters_show', array('id' => $generalParameter->getId())));
}
} |
ahh p-e mettre aussi le formulaire imbriqué
Code:
->add('culture', 'collection', array('type' => new CultureType()))
Voilà j'ai l'impression de m'etre tendu un piege tout seul avec doctrine2 qui m'a généré le AddCulture pour gérer la relation entre culture et generalParameters.
a savoir seul la table generalParameters comptre une clé etrangere culture_id, la table culture elle ne compte qu'une colonne id et uen colonne name.
Si vous avez des pistes, des solutions je suis preneur.
Cordialement
Lexter
ps: question idiote, puis je faire une methode setGeneralParameters ou setGgeneralParametersId dans l'entité culture alors que la table correspondante n'a pas de champ generalParametersId ou alors devrait il y en avoir un? emcri d'avance!