具有多态性的模型,具有许多简单的一对多关系

问题描述 投票:0回答:1

我正在使用laravel 5.7。我现在有一种情况,我有一个Fight模型与结构user_id, fightable_id我有两个其他表usersmonsters。所以users_id指用户(用户可以有很多打架)和fightable_id可以指usermonster(怪物表)。所以我必须定义关系船的功能

对于我必须做的用户模型

1.多态一对多关系

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

2.简单的一对多关系

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

我现在很困惑。当然唯一的办法就是改变功能名称。但我会通过改变函数名称来做正确的事情(因为两个函数都有相同的名称)。或者我做错了什么?

laravel eloquent polymorphic-associations
1个回答
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');
  }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.