От многих до многих отношений в Laravel: принадлежит ToMany() vs. hasManyThrough()

В чем разница между использованием attributesToMany() или hasManyThrough() при определении отношения Many To Many в Laravel?

Пример: User Account Account_User

Таким образом, у Пользователя есть много общего с учетной записью через таблицу Account_User. Помимо того, что это только сводная таблица, которая определяет связанных пользователей со связанными учетными записями, она также сохраняет поле Account_User.role, которое определяет, какую роль данный пользователь имеет в данной учетной записи.

Каковы были бы последствия использования User belongsToMany() Account или User hasManyThrough() Account Account_User? Или это по сути то же самое?

При выборе метода, я думаю, я должен использовать тот же метод для определения обратной связи.

Ответ 1

Скажем, у вас есть две модели, позвоните A и B:

Если A может иметь более одного элемента B, а также Если B может иметь более одного элемента A (думаю, как сообщения в блоге/теги) Вы должны использовать belongsToMany();

Теперь скажем, что у вас есть 3 модели, A, B и C.

A связан с B, а B связан с C. Но вам нужно получить доступ ко всем C, связанным с A (более B), тогда вам нужно использовать hasManyThrough() (подумайте, что countriesusersposts, и вам нужно все post от конкретного country)

hasManyThrough() не полностью предназначен для многих-многих отношений, он скорее похож на ярлык.

Проверьте ссылки документации, 1, 2 (Laravel 4.2), или 3, 4 (Laravel 5.x).