Флаги односторонние, поэтому у вас не может быть «двухсторонних флагов».
В Drupal 8/9 флаг всегда имеет целевую сущность.
Таким образом, если пользователь A отмечает пользователя B, а пользователь B отмечает пользователя A, у вас есть два флага:
- Флаг пользователя A пользователя B
- Флаг пользователя B пользователя A
Я не могу придумать хороший способ сделать это в представлениях без специального кода.
Альтернативой может быть что-то вроде Флаг друга модуль, который реализует функцию «дружества» (или функцию взаимного пролистывания Tinder для сопоставления).
Реализовав подобную функциональность ранее в Drupal 7, в Drupal 8/9, я бы подумал о написании кода в _flagging_insert()
хук, который проверяет, когда пользователь помечает другого пользователя, и определяет, пометил ли помеченный пользователь пометившего пользователя. Если это так, создайте объект (может быть узел со ссылками на объекты для обоих пользователей или пользовательский объект, если вы хотите получить фантазию) типа Друг или же Соответствовать или что-то еще, а затем отсортируйте совпадения таким образом в представлениях. Конечно, если пользователи могут снимать флаги друг с друга и нарушать совпадение, вы также должны добавить код для поддержки этого случая.