Aggiungi record correlato alla creazione del record

0

La mia domanda è ad alto rischio di essere duplicata, ma non per mancanza di indagini. Sono stato a lungo con questo problema, e non ho trovato nulla per risolverlo, ma sembra un problema così ovvio e comune, che qualcuno deve aver già risposto a questo.
Il fatto è che ho due tabelle correlate, dico prodotto e product_images, dove product_images si riferisce al prodotto con il campo product_id.
Nel CRUD (un'applicazione web scritta in php con codeigniter e MySQL come db) ho un modulo con i dati del prodotto e un pulsante per aggiungere immagini da un pop-up.
La domanda è: c'è un modo elegante / efficiente di aggiungere un'immagine a un prodotto quando creo il prodotto (e non c'è ancora product_id)? O devo prima salvare il prodotto e poi aggiungere le immagini sulla modifica del prodotto?
Grazie mille per qualsiasi idea! Mi sento molto stupido con questo problema.

    
posta tebastian 03.06.2017 - 23:15
fonte

1 risposta

2

Ti suggerisco di iniziare con l'esperienza di dominio che i tuoi utenti avranno.

Da un punto di vista tecnico e di modellazione dei dati, potresti avere Prodotti, Immagini e Associazioni tra di loro. Ma vuoi che i tuoi utenti siano in grado - o doverli - di gestire queste 3 cose separatamente o desideri un'esperienza utente semplificata in cui l'utente aggiunge Prodotti con Immagini, e forse di volta in volta aggiunge più immagini ai prodotti. Ad ogni modo, questa è una decisione di dominio, non tecnica.

E, scusa, non conosco il codeigniter, anche se, in generale, devi inserire una riga in una tabella prima di poter ottenere / utilizzare il suo id in un'associazione di qualche tipo.

Tuttavia, vari database ti permetteranno di vedere l'id dopo l'inserimento ma ancora all'interno della transazione, quindi puoi inserire altre righe (in un'altra tabella che richiede l'ex id come chiave esterna) nello stesso commit (cioè in un round viaggio al db), che è efficiente quanto si otterrà.

Ad esempio: MySQL ; SQL Server ; Oracle .

C'è apparentemente anche qualche supporto in PHP per ottenere l'ultimo id $conn->insert_id , vedere più qui .

Frasi di ricerca "id dell'ultimo inserimento"; "identità dell'ultima riga inserita".

    
risposta data 04.06.2017 - 03:42
fonte