Sto giocando con Laravel e ho trovato qualcosa nella documentazione per definire le relazioni 1 a 1 tra le tabelle su cui vorrei ricevere un feedback.
L'esempio nei documenti è tra una tabella user
tabella phone
, dove ogni user
può avere una voce phone
.
Ecco l'esempio di Laravel:
class User extends Eloquent {
public function phone()
{
return $this->hasOne('Phone');
}
}
Se si ottiene un singolo utente con ORM, viene eseguita la seguente query:
select * from users where id = 1
E se provi ad accedere al numero di telefono nel risultato, il framework vedrà la relazione ed eseguirà
select * from phones where user_id = 1
Ecco da dove viene la mia domanda. Avrei avuto una colonna phone_id
nello schema della tabella user
e la query per ottenere il numero di telefono sarebbe:
select * from phones where id = [user.phone_id]
Pensandoci mentre scrivi il post, il modo "Laravel" sembra avere il vantaggio di essere in grado di diventare un rapporto da 1 a molti, il che mi ha fatto pensare se stavo sbagliando tutto questo tempo? In che modo strutturate normalmente lo schema per le relazioni da 1 a 1 e da 1 a molte?