Próbowałem zdefiniować jakiś schemat bazy danych, aby użyć frameworka laravel. Chcę modelować mecz piłki nożnej. Pierwszym krokiem, jaki chciałem zrobić, było zdefiniowanie diagramu relacji encji, ale znalazłem to (co uważałem za dość trywialne), aby było mylące w niektórych aspektach.Baza danych One-to-Many z dwoma kluczami obcymi w Laravel
Po pierwsze, oczywistym podejściem jest stwierdzenie, że mecz jest powiązany z dwoma drużynami, a drużyna jest powiązana z dowolną liczbą meczów. Tak więc chcielibyśmy mieć relację "wiele do wielu".
Ale implementacja relacji wiele do wielu polega na tym, że dwie tabele i tabela pośrednia odnoszą się do obu podmiotów. Myślę, że byłoby to zbyt wiele, gdy wiem, że mecz zawsze będzie miał dwa zespoły i wystarczy mieć dwie kolumny (local_id i visitant_id) z obcymi kluczami do tabeli drużyn. Plus, chcę być w stanie to zrobić:
Match::find(1)->local() or Match::find(1)->visitant();
więc, myśląc o tym jestem wdrożenie „jeden do wielu” relacji, ale z tym mam inny problem. Aby pobrać wszystkie mecze zespół grał chciałbym zrobić:
Team::find(1)->matches();
Ale nie mogę tego zrobić, ponieważ można określić tylko jedną kolumnę klucza przy określaniu mecze() metoda w wymowny (domyślnie byłoby team_id, ale powinno to być visant_id i local_id).
dla mnie to powraca tylko modele powiązane z "visitant_id" ... – ciccioassenza
To nadal działa w Laravel 5.2 – arleslie
W Laravel 5.3 $ jest to pusty obiekt modelu. Jakieś pomysły, jak to osiągnąć w Laravel 5.3? –