Агрегационные отношения (два или более) между двумя таблицами в laravel 5

Я разрабатываю веб-приложение с помощью laravel 5. Теперь у меня есть проблема ниже:

  • У меня есть два пользователя таблицы и обратные связи

    • пользователи: id, имя пользователя, пароль

    • отзывы: id, поставщик, получатель, рецензент, контент

  • I want to provider, receiver and reviewer is a user. То есть я буду хранить идентификатор пользователя в провайдера, получателя и рецензента.

  • В laravel я могу настроить отношения только для пользователя модели, как: $this->belongsTo('User', 'provider', 'id')

  • И я хочу, чтобы получатель и рецензент также имели отношение belongsTo

  • Я думал создать третью таблицу для отношений «многие ко многим», но если я это сделаю, я должен создать две таблицы для receiver и reviewer.

Мне нужно помочь решить эту проблему без использования дополнительных запросов на контроллере, спасибо за чтение.

1 ответ

  1. в модели обратных связей создайте следующие отношения:

    public function provider()
    {
        $this->belongsTo('User', 'provider', 'id');
    }
    
    public function reviewer()
    {
        $this->belongsTo('User', 'reviewer', 'id');
    }
    
    public function receiver()
    {
        $this->belongsTo('User', 'receiver', 'id');
    }