Алексей Мариненков: Вам $qwe = Contacts::findAll(['my_id' => 1]), $qwe нужно перебирать циклом, чтобы получить каждый контакт, но тут изначально логика не верная
Метод findAll() класса ActiveRecord возвращает массив данных, к нему не применим метод getUser(), в тоже время метод getUser() возвращает модель User, к нему не применим метод all()
На всех трех версиях, также разное окружение, но настроено всё таким образом что конфиги цепляются в зависимости от того где расположен проект, если локальная версия то одни, на дев и продакшн соответственно другие
Миха Панкратов: $value->getUserAvailabilities()->all() чтобы получить связанную модель или модели достаточно $value->getUserAvailabilities() или $value->userAvailabilities, чтобы получить по конкретному пользователю, нужно настраивать связь
Миха Панкратов: в findOne вы получаете модель, но есть вызовы где вы можете получать несколько моделей, там вместо модели приходит массив моделей, и чтобы получить связь, нужно обратиться к модели, по индексу массива, либо обойти массив форичем
Почему не "при изменении удалять все связи и прописывать их по заново"? Тут наверное единственный минус это рост значения id промежуточной таблицы, но это не критично, так как даже при самом активном пользовании запас значения id если его выставить в bigint будет достаточным на несколько сотен лет (где то в сети читал статью с расчетом всего этого дела)