gpt4 book ai didi

php - 无法使用 symfony2 将 onetoone 转换为 onetomany

转载 作者:搜寻专家 更新时间:2023-10-30 23:08:10 24 4
gpt4 key购买 nike

我在一家公司工作了大约 2 周,我的第一个任务是更新和实现一个用 symfony2-doctrine 编写的现有软件的新功能。但我必须做出的改变之一就是打破我的背部。

以前的模型是:一个“cliente”(客户)只能有一个“credito”(信用),一个“credito”可以有多个“venta”(销售)新模型应该是:一个“cliente”(costumer)可以有多个“credito”,一个“credito”可以有多个“venta”(为了向后兼容,我保持onetomany关联)

我的实体是这样的:

客户端.php

class Cliente {
//put your code here
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;

/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
protected $nombre;

/**
* @ORM\Column(type="string", unique=true)
* @Assert\NotBlank()
*/
protected $documento;


/**
* @ORM\Column(type="string", nullable=true)
*/
protected $direccion;

/**
* @ORM\Column(type="string", nullable=true)
*/
protected $telefono;

/**
* @ORM\Column(type="string", nullable=true)
*/
protected $celular;

/**
* @ORM\Column(type="string", nullable=true)
* @Assert\Email()
*/
protected $email;

/**
* @ORM\Column(type="string", nullable=true)

*/
protected $ciudad;


/**
* @ORM\Column(type="string", nullable=true)

*/
protected $departamento;

/**
* @ORM\Column(type="string", nullable=true)

*/
protected $referenciaFamiliar;

/**
* @ORM\Column(type="string", nullable=true)

*/
protected $referenciaFamiliarTelefono;

/**
* @ORM\Column(type="string", nullable=true)

*/
protected $referenciaPersonal;


/**
* @ORM\Column(type="string", nullable=true)

*/
protected $referenciaPersonalTelefono;


/**
* @ORM\OneToMany(targetEntity="Credito", mappedBy="cliente", cascade={"all"})
*/
protected $credito;



/**
* @ORM\Column(type="string", nullable=true, length=255)
*/
protected $photo;

/**
* @Assert\File(maxSize="300k", mimeTypes={"image/jpeg","image/png"},mimeTypesMessage="Debe subir una imagen JPG o PNG",maxSizeMessage="La imagen no puede pesar más de 300 kb.")
*/

protected $file;

信用.php

class Credito {
//put your code here
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;

/**
* @ORM\Column(type="string",nullable=true)
* @Assert\NotBlank()
*/
protected $cc;

/**
* @ORM\Column(type="datetime",nullable=false)
* @Assert\DateTime()
*/
protected $fechaRegistro;

/**
* @ORM\ManyToOne(targetEntity="Cliente",cascade={"persist"})
* @ORM\JoinColumn(name="cliente_id",referencedColumnName="id")
*/
protected $cliente;

/**
* @ORM\OneToMany(targetEntity="Venta", mappedBy="credito",cascade={"all"})
*/
protected $ventas;

/**
* @ORM\OneToMany(targetEntity="Abono", mappedBy="credito",cascade={"persist"})
*/
protected $abonos;

/**
* @ORM\Column(type="datetime",nullable=true)
* @Assert\DateTime()
*/
protected $fechaProximoPago;

/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\NotBlank()
*/
protected $valorProximoPago;

/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
*/
protected $cuotasTotales;

/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
*/
protected $cuotasPagadas;



/**
* @ORM\ManyToOne(targetEntity="ModoPagoNom")
* @ORM\JoinColumn(name="modo_pago_id",referencedColumnName="id")

*/
protected $modoPago;

/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\NotBlank()
*/
protected $valorFinanciado;


/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\NotBlank()
*/
protected $cupo;


/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\NotBlank()
*/
protected $cupoUsado;

文塔.php

class Venta{
//put your code here
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;

/**
* @ORM\Column(type="datetime")
* @Assert\DateTime()
*/
protected $fecha;

/**
* @ORM\Column(type="datetime")
* @Assert\DateTime()
*/
protected $fechaPrimerPago;

/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
protected $numeroFactura;

/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
protected $numeroAutorizo;




/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\Min(limit="0", message="El valor de la factura debe ser positivo")
*/
protected $valorFactura;

/**
* @ORM\Column(type="integer")
* @Assert\Type("integer")
* @Assert\Min(limit="1", message="Debe especificar al menos una cuota")
*/
protected $numeroCuotas;


/**
* @ORM\Column(type="integer")
* @Assert\Min(0)
*/
protected $cuotasPagadas;

/**
* @ORM\ManyToOne(targetEntity="ModoPagoNom")
* @ORM\JoinColumn(name="modo_pago_id",referencedColumnName="id")

*/
protected $modoPago;

/**
* @ORM\ManyToOne(targetEntity="Credito",cascade={"persist"})
* @ORM\JoinColumn(name="credito_id",referencedColumnName="id")
*/
protected $credito;


/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\Min(0.0)
*/
protected $valorFinanciado;

/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\Min(0.0)
*/
protected $valorCuota;

/**
* @ORM\Column(type="decimal",scale=3, precision=23)
* @Assert\Min(0.0)
*/
protected $valorPrimeraCuota;

/**
* @ORM\ManyToOne(targetEntity="Almacen")
* @ORM\JoinColumn(name="almacen_id",referencedColumnName="id")
*/
protected $almacen;

/**
* Get id
*
* @return integer
*/

问题是: 每次我插入一个新的“credito”时,它都不会链接到现有的“cliente”,而是尝试插入一个重复的“cliente”条目。我尝试了很多方法,但都没有任何效果。

我很感激任何帮助,因为我坚持这样做。如果需要更多信息或代码,我很乐意提供。

最佳答案

cascade={"persist"} 应该是您问题的核心:

class Credito {
......
/**
* @ORM\ManyToOne(targetEntity="Cliente",cascade={"persist"})
* @ORM\JoinColumn(name="cliente_id",referencedColumnName="id")
*/
protected $cliente;

它告诉学说,当您坚持 Credito 时,始终坚持 cleinte。有关详细信息,请参阅文档 http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations

关于php - 无法使用 symfony2 将 onetoone 转换为 onetomany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com