Ho cercato di definire alcuni schemi del database per utilizzare il framework laravel. Voglio modellare una partita di calcio. Il primo passo che ho voluto fare è definire il diagramma di Entity Relationship, ma ho trovato questo (che pensavo sarebbe stato piuttosto banale) essere confuso in alcuni aspetti.Database uno-a-molti con due campi chiave esterna in Laravel
In primo luogo, l'approccio ovvio è quello di dire che una partita è legata a due squadre, e una squadra è legata a qualsiasi numero di partite. Quindi, avremmo una relazione "Molti a molti".
Ma l'implementazione di una relazione molti-molti è di avere due tabelle e una tabella intermedia per collegare entrambe le entità. Penso che sarebbe troppo, quando so che una partita avrà sempre due squadre e semplicemente due colonne (local_id e visitant_id) con chiavi esterne alla tabella dei team sarebbe sufficiente. Inoltre, voglio essere in grado di fare:
Match::find(1)->local() or Match::find(1)->visitant();
Così, pensando a questo sono l'attuazione di un "uno a molti" relazione, ma con questo non ho un altro problema. Per recuperare tutte le partite di una squadra ha giocato vorrei fare:
Team::find(1)->matches();
Ma non posso fare questo perché posso specificare una sola colonna chiave nella definizione delle partite() metodo in eloquenti (per impostazione predefinita, sarebbe team_id, ma dovrebbe essere visitant_id e local_id).
per me questo ritorno solo modelli "visitant_id" ... – ciccioassenza
Questo funziona ancora in Laravel 5.2 – arleslie
In Laravel 5.3 $ questo è un oggetto modello vuoto. Qualche idea su come ottenere ciò in Laravel 5.3? –