Many to Many i dodatkowa kolumna w tabeli łączącej

Witam!

Mam dwa modele Gra i Konto. Ma też tabelę gra_konto która przechowuje pary łączące te dwa modele. Łączę modele przez funkcję link(). To wszystko działa mi dobrze. Chciał bym teraz zapisywać dodatkowe dane do tego połączenia czyli dodałem kolumnę dataAktualizacji do tabeli gra_konto ale nie wiem jak ja aktualizować. Funkcja link() działa tylko na nowe elementy, przy edycji wyskakuje błąd zduplikowania wpisu. Proszę o pomoc. W jaki sposób odwołać się do tabeli łączącej i zmienić w niej wartość dodatkowej kolumny?

Mógłbyś pokazałeś kod opisujący to co powyżej napisałeś tekstowo?

Metoda link posiada dodatkowy argument, gdzie możesz dodać ekstra kolumny http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#link()-detail

Pytanie tylko dlaczego chcesz aktualizować taki rekord. Skoro tabela jest tylko węzłem łączącym, to zwyczajowo usunięcie połączenia skutkuje skasowaniem rekordu, a nie jego aktualizacją.

Ten rekord łączy model Gra z modelem Konto. Mam wiele gier i kont spiętych ze sobą. Chciał bym zapisywać w tabeli łączącej te dane datę aktualizacji tych danych. Aktualizuję konkretną parę czyli grę w koncie. Nie aktualizuję od razu całego konta, czyli wszystkich jego gier. Tak samo nie aktualizuję wszystkich kont w danej grze. Dlatego najbardziej oczywistym dla mnie miejscem trzymania takiej informacji jest tabela łącząca. Niestety nie widzę możliwości aktualizacji tej dodatkowej kolumny. Są tylko możliwości utworzenia i usunięcia łącza przez link ale niestety nie znalazłem funkcji aktualizującej.

Ja bym wykorzystał poniższe:

http://www.yiiframework.com/doc-2.0/guide-concept-behaviors.html

podpiął do modelu gra_konto i zrobił aktualizację kolumny na pasującym Ci wbudowanym, lub własnym ewencie.

Mam tylko model Gra i model Konto. Na razie nie tworzyłem modelu GraKonto bo szukałem prostszego rozwiązania. Jeśli nie znajdę nic prostszego to pewnie będę musiał tak zrobić.

Mam takie pytanie masz tabelę:

Gra i Konto i junction tabel Gra_Konto, która spina te dwie tabele w relacji Many to Many, czy możesz powiedzieć podczas jakiej akcji chciałbyś robić aktualizację daty w nowej kolumnie tabeli Gra_Konto?

Mam egzemplarz klasy Konto. Uruchamiam metodę dla tej klasy która w pętli przechodzi przez wszystkie elementy Gra i sprawdzać ma tą datę. Jeśli data jest starsza o jakiś zadeklarowany czas wówczas uruchamia dla pary Konto_Gra funkcję pobierającą dane z zewnętrznego systemu i po pobraniu zaznacza sobie nową datę pobrania.

Może i dobrym rozwiązaniem było by dodanie modelu GraKonto to by ułatwiło prace. Spróbuję tego tylko z jednej strony odczytuję dane przez relację, np. od strony Gry mam już ustawioną grę ale muszę przy wyciąganiu egzemplarza podać id Konta które mnie interesuje. Myślałem po prostu, że da się to prościej zrobić ale widać to jednak najlepsze rozwiązanie.