具有多态多对多且简单一对多关系的模型

时间:2019-03-07 19:15:39

标签: laravel eloquent polymorphic-associations

我正在使用laravel 5.7。我现在遇到一种情况,我有一个结构为Fight的{​​{1}}模型 我还有另外两个表user_id, fightable_idusers。因此monsters指的是用户(用户可以打很多仗),而users_id可以指的是fightable_iduser(怪兽表)。所以我必须定义关系船的功能

我必须做的用户模型

1。对于多态多对多关系

monster

2。用于简单的一对多关系

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

我现在很困惑。当然,唯一的方法是更改​​函数名称。但是我将通过正确更改函数名称来做正确的事情(因为两个函数具有相同的名称)。还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但我会尽力而为!

此外,这篇文章确实可以帮助您了解您所面临的问题,我认为, Laravel morph relationship

使用我链接的文章中的代码,但获取您的表格将产生这样定义的模型。

用户模型

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');
  }
}

如果您仍然觉得这还没有回答您的问题或需要更多帮助,请告诉我!