Ciao Massimiliano
Ho finalmente dato un occhio alla documentazione, e se non ho inteso male quello che devo usare è una classe "mappedsuperclass" per tt quelle tabelle che hanno relazione con machine, come per esempio lotto che hai visto anche tu.
Per esempio:
/**
* @MappedSuperclass
*/
class Serial
{
/**
* @var string
*
* @Assert\Callback({"AppBundle\Validator\SerialValidator", "validate"})
*/
private $serial;
}
Nella tabella lotto che estende Serial per esempio:
/**
* Lotto
*
* @ORM\Table(name="lotto")
* @ORM\Entity(repositoryClass="AppBundle\Repository\LottoRepository")
*
@Entity
* @AttributeOverrides({
* @AttributeOverride(name="serial",
* column=@Column(
* name = "serial_start",
* type = "string",
* length = 45,
* unique = true,
* )
* ),
* })
*/
class Lotto extends Serial {
/* bla bla bla */
/* bla bla bla */
}
E poi dentro la classe io posso agire come se fosse un attributo di lotto normale e quindi mi permette di fare le funzioni getserialstart etc etc giusto??
La validazione sarebbe da mettere nella mappedsuperclass (Serial) oppure nella classe normale (Lotto) e nel caso sempre con un validatore dedicato??
Però ho un dubbio, che mi è venuto leggendo la documentazione.
Ovvero, io con serial non ho una relazione diretta tra machine e lotto attraverso il serial. (o non centra nulla??)
La mia relazione è con id (oggetto machine) semplicemente per capire a quale tipologia di macchina appartiene un certo lotto.
Infatti ricavando l'oggetto Lotto symfony già mi da l'oggetto Machine con tutti i suoi attributi.
Provo ulteriormente a spiegare il mio flow che vale per lotto ma anche per altre situazioni che avrò:
Ho una pagina dedicata dove con una tendina scelgo il modello di macchina ed inserisco serial_start (numero di serie dal quale parte il lotto) e serial_end numero di serie col quale finisce il lotto più la data di produzione del lotto stesso.
Quando io invio il suddetto form, la mia intenzione era avendo già l'oggetto Machine, lo passo al validatore per i campi serial. Il validatore ricevendo l'oggetto machine carica i campi che userò per definire le regole di validazione, $serial_start; $serial_base; $serial_remove.
Dentro il validatore eseguo tutta la mia logica di controllo ed in caso di problemi creo la violazione.
Ora ho il che tu possa aver inteso una relazione diretta con SERIAL e quindi usare la mappedsuperclass oppure mi sono per io per strada e non capisco su quale linea procedere. Nel caso ti chiedo scusa.
Ho paura che mi sto perdendo in un bicchier d'acqua.
Attendo se puoi qualche tuo chiarimento in merito.
Grazie mille come sempre
Stefano