relazioni Laravel e schema del database

1

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?

    
posta shauno 16.01.2015 - 21:13
fonte

1 risposta

1

Dato che non hai seguito la convenzione di Eloquent devi scriverlo manualmente e è semplice specificare il secondo e il terzo argomento in hasOne o altre funzioni di ORM obj.

cioè:

class User extends Eloquent {
   public function phone()
   {
      return $this->hasOne('Phone','id','phone_id');
   }

}

Dove il secondo argomento è il nome della colonna del primo argomento (la tabella con cui vuoi creare una relazione, in questo caso Phone ) e il terzo argomento è il nome della colonna in questo modello User

    
risposta data 24.02.2015 - 10:05
fonte

Leggi altre domande sui tag