У меня есть таблица пользователей, в которой хранятся все мои пользователи. Мое приложение позволяет родителям и их детям использовать их собственные адреса электронной почты, но мне нужно иметь возможность сказать, что «ребенок 1 связан с родителем 1 и родителем 2». Я хочу сохранить все это в одной таблице, похоже, это отношения «многие-многие», поскольку многие пользователи могут принадлежать любому количеству других пользователей.
Как бы я красноречиво изобразил внутренние отношения многих-многих?
Я своими попытками попал только в сетку.






Я думаю, вы представляете это так же, как и любые другие отношения «многие ко многим»; Единственное отличие состоит в том, что одна и та же модель User поддерживает как отношения по умолчанию, так и обратные отношения:
public function parents(){
return $this->belongsToMany(User::class, "users_users", "user_id", "parent_id");
}
public function children(){
return $this->belongsToMany(User::class, "users_users", "parent_id", "user_id");
}
Примечание: у меня могут быть user_id и parent_id наоборот, но это можно легко отрегулировать.
Единственная уловка, которую я вижу в этом, - это попытка рекурсивно получить дочерние элементы детей, если это вызывает беспокойство, но в противном случае это должно работать для базового типа многие-ко-многим.
Ага :) Как и любому many-to-many, вам понадобится сводная таблица, поэтому users_users, как минимум, с parent_id и user_id
так мне нужна сводная таблица users_users?