Bonjour,
Voila je rencontre un petit problème avec mon code.
j'ai 2 entity Recharge et Discount .
Dans l'entity Discount
/**
* @ORM\OneToMany(targetEntity=Recharge::class, mappedBy="discount")
*
*/
private $recharges;
Dans l'entity Recharge
/**
* @ORM\ManyToOne(targetEntity=Discount::class, inversedBy="recharges")
*/
private $discount;
Décrivez ici votre code ou ce que vous cherchez à faire
$recharge->setPaymentStatus('SUCCESS');
$recharge->setSenderPhoneNumber($this->getUser()->getPhone());
$recharge->setPaymentGateway(Constantes::PAYMENT_GATEWAY_STRIPE)
->setTransactionIdUnite($airtime_content->responseId)
->setTransactionStatutUnite("SUCCESS")
->setTransaction($charge->id)
->setTaxid($charge->id)
->setBalanceTransaction($charge->balance_transaction)
->setCarte($charge->source->id)
->setCountryCard($charge->source->country)
->setUser($this->getUser())
->setDiscount($discount)
->setFinger($charge->balance_transaction);
$this->em->persist($recharge);
$this->em->flush();
L'enregistrement s'effectue correctement quand je mets cascade="persist" mais le problème il me duplique le l'enregistrement du discount dans la base de donnée avec un nouvel id
Dans je mets pas cascade="persiste" j'obtiens ça
Doctrine\ORM\ORMInvalidArgumentException {#1062 ▼
#message: "A new entity was found through the relationship 'App\Entity\Recharge#discount' that was not configured to cascade persist operations for entity: App\Entity\Discount@000000006eb580b70000000060cc37b0. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}). If you cannot find out which entity causes the problem implement 'App\Entity\Discount#__toString()' to get a clue. ◀"
#code: 0
#file: "C:\wamp\www\banlalsend\vendor\doctrine\orm\lib\Doctrine\ORM\ORMInvalidArgumentException.php"
#line: 102
trace: {▶}
Merci d'avance
Bonjour et merci,
dans mon entity Recharge jai:
public function getDiscount(): ?Discount
{
return $this->discount;
}
public function setDiscount(?Discount $discount): self
{
$this->discount = $discount;
return $this;
}
//dans Entity Discount
/**
* @return Collection|Recharge[]
*/
public function getRecharges(): Collection
{
return $this->recharges;
}
public function addRecharge(Recharge $recharge): self
{
if (!$this->recharges->contains($recharge)) {
$this->recharges[] = $recharge;
$recharge->setDiscount($this);
}
return $this;
}
public function removeRecharge(Recharge $recharge): self
{
if ($this->recharges->contains($recharge)) {
$this->recharges->removeElement($recharge);
// set the owning side to null (unless already changed)
if ($recharge->getDiscount() === $this) {
$recharge->setDiscount(null);
}
}
return $this;
}
D'ac, merci.
À priori c'est dans ton addRecharge, tu fais un $recharge->setDiscount($this);
Maintenant par rapport à ce que tu fais plus haut, à quel moment tu fais ton addRecharge ?
Non je fais pas de addRecharge.
je fais juste un :
$recharge->setDiscount($discount)
le discount existe en base de donnée l'id = 1 par exemple. mais j'obtiens l'erreur qui me demande d'ajouter cascade=persist, si j'ajoute ce code, l'enregistrement se fera mais avec le meme $discount dont l'id =2 (il duplique en base de donnée)