Я использую ларавель 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');
}
Я сейчас в замешательстве. Конечно, единственный способ - изменить имя функции. но я буду поступать правильно, правильно меняя имена функций (поскольку обе функции имеют одинаковое имя). или я что-то не так делаю?






Я не уверен, что полностью понял ваш вопрос, но я постараюсь!
Также этот пост действительно поможет вам понять проблему, с которой вы столкнулись, я думаю, Отношение морфинга Laravel
Использование кода из сообщения, на которое я ссылался, но использование ваших таблиц приведет к созданию моделей, определенных следующим образом.
Модель пользователя
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');
}
}
Если вы все еще чувствуете, что это не ответило на ваш вопрос или вам нужна дополнительная помощь, просто дайте мне знать!