Модель с полимолиморфным отношением один ко многим и простым отношением один ко многим - PullRequest
0 голосов
/ 07 марта 2019

Я использую Laravel 5.7. У меня сейчас ситуация, когда у меня есть Fight модель со структурой user_id, fightable_id у меня есть две другие таблицы users и monsters. поэтому users_id относится к пользователям (у пользователя может быть много боев), а fightable_id может относиться либо к user, либо к monster (таблица монстров). поэтому я должен определить функции для корабля отношений

для модели пользователя, которую я должен сделать

1.для полиморфных отношений один ко многим

public function fights()
{
    return $this->morphMany('App\Fight', 'fightable');
}

2.для простого отношения один ко многим

 public function fights()
    {
        return $this->hasMany('App\Fight');
    }

Я сейчас растерялся. Конечно, единственный способ - изменить имя функции. но я буду делать правильные вещи, меняя имена функций правильно (так как обе функции имеют одинаковое имя). или я что-то не так делаю?

1 Ответ

0 голосов
/ 08 марта 2019

Не уверен, что полностью понимаю ваш вопрос, но постараюсь!

Также этот пост действительно поможет вам понять проблему, с которой вы столкнулись, я думаю, Laravel morph Relations

Использование кода из поста, который я связал, но взятие ваших таблиц привело бы к определению моделей, подобных этой.

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

class User extends Model
{
  public function fights()
  {
    return $this->hasMany('App\Fight');
  }
}

Модель боя

class Fight extends Model
{
  public function user()
  {
    return $this->belongsTo('App\User');
  }

  public function fightable()
  {
    return $this->morphTo();
  }
}

Модель монстра

class Monster extends Model
{
  public function fight()
  {
    return $this->morphOne('App\Fight', 'fightable');
  }
}

Если вы все еще чувствуете, что это не ответило на ваш вопрос или вам нужна дополнительная помощь, просто дайте мне знать!

...