定义三个Laravel模型之间的Eloquent关系和表格

x759pob2  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在为我所属的一个俱乐部开发一个管理工具应用程序,使用Laravel/Vue/Inertia,我试图确定如何最好地为三个模型创建雄辩的关系。
每年,每个成员都被要求在俱乐部周围投入一定数量的工作时间来帮助工作。俱乐部被分成多个区域,称为纪律。当成员投入他们的时间时,目前他们填写一张纸条,上面包含纪律,日期,时间,并且需要规程的“所有者”或该区域的指定审批人的审批签名。这就是我希望在应用程序中实现的功能。创建WorkHours条目时,用户将输入日期、小时数、规程和该规程的指定批准者。
这意味着用户记录可以同时是a)规程的批准人和b)WorkHours记录提交给的用户(但由于显而易见的原因,不能同时在一个WorkHours记录上)。
因此,在我看来,我需要三个模型和以下字段,基于以下事实:

  • 一个规程模型可以有多个批准人(用户),一个用户可以是多个规程的批准人(即多对多)
  • WorkHours条目仅属于一个用户(user_id),并且仅具有一个批准人(approper_id)
  • 一个用户可以有多个WorkHours记录并属于多个规程
    **纪律 *
  • 姓名
  • approvers() = ->belongsToMany(User::class)
    工时
  • 日期
  • 小时
  • member() = ->belongsTo(User::class)转换为user_id
  • discipline() = ->belongsTo(Discipline::class)
  • approver() = ->hasOne(User::class)转换为approver_id
    用户
  • disciplines() = ->belongsToMany(Discipline::class)
  • workHours() = ->hasMany(WorkHours::class)

我的表和相关字段将如下所示:

工作时间

  • 身份证
  • 用户标识
  • 批准人ID
    学科
  • 身份证
  • 姓名
    用户
  • 身份证
  • 姓名
    学科_用户
  • 用户标识
  • 规程_id

这一切看起来都对吗?或者有没有更好的方式来定义我的关系?

z4bn682m

z4bn682m1#

正如这里所详述的,这就是答案。
我的问题(正如我所怀疑的)是在关系定义中。

public function approval()
    {
        return $this->belongsTo(WorkHours::class, 'approver_id');
    }

到这个

public function approvals()
    {
        return $this->haMany(WorkHours::class, 'approver_id');
    }

它工作得很好。没有用户id值要写,因为approver的关系是错误的,这就是为什么它要寻找默认值。

相关问题