ORM: дружба / буддистские отношения

php orm relationship laravel eloquent

627 просмотра

1 ответ

Я пытаюсь использовать ORM в первый раз, я определил модели следующим образом:

Модель пользователя:

class User extends Eloquent
{
    public function friends()
    {
       return $this->has_many_and_belongs_to('User', 'friends', 'user1_id', 'user2_id');
    }    
}

Модель друга:

class Friend extends Eloquent
{
    public function friend()
    {
        return $this->belongs_to('User', 'user_id');
    }    
}

Друзья MySQL таблицы:

id (pkey) # user1_id (references users.user_id) # user2_id (references users.user_id)

Прямо сейчас с помощью $user->friendsя получаю односторонний список, потому что параметры базы данных друзей могут быть в любом порядке (пользователь1 является другом пользователя2 ИЛИ пользователь2 является другом пользователя1). Это было бы хорошо, если бы я пытался использовать подход «следование / последователи», но я хочу, чтобы он был взаимным.

Каков наилучший способ сделать такие вещи? Вставка дублированных user1 / user2 и user2 / user1 в базу данных не выглядит хорошим подходом, и я даже не знаю, как перевести это в ORM. Кроме того, кажется, что модель Friend не используется / не вызывается вообще.

У меня также будет похожая проблема в системе приглашения друзей.

Автор: braindamage Источник Размещён: 17.05.2019 02:35

Ответы (1)


2 плюса

Решение

Вы ищете отношения Многие ко Многим, между Пользователями! Посмотрите, как вы можете сделать это в Учении: Учение - многие ко многим . Пример доктрины может помочь вам начать.

Идея состоит в том, что у вас есть одна сущность, пользователи, и они могут дружить друг с другом.

Автор: Matija Размещён: 08.11.2012 05:25
Вопросы из категории :
32x32