Laravel 5.1 - 3个表之间的数据透视表

时间:2015-07-15 14:40:00

标签: php laravel laravel-5 relationship pivot-table

我对Laravel相对较新,并且在过去3周的实习期间一直在研究它,但现在我遇到了问题。

我有3个表:用户,出价和工作。我希望用户能够对作业进行出价。

我的表格的基本结构如下:

Users:
id | name | email | description

Jobs:
id | title | description

Bids:
id | proposal

需要满足以下条件:

  1. 用户可以对多个作业出价,但他们只能对每个作业进行一次出价。
  2. 作业可以有许多用户的许多出价。
  3. 每个出价仅链接到一个用户和一个作业。
  4. 实施例: 用户1在作业1上提出300英镑的建议。这将创建一个id为1和300英镑的出价。数据透视表将包含用户ID(1),作业ID(1)和出价ID(1)以及默认情况下将设置为待定的状态。

    我还希望链接所有3的表具有状态。我按如下方式创建了一个:

    bid_job_user:

    bid_id | user_id | job_id | status
    

    但是关系都是错误的,因此如果我想更新状态,同步方法等将无法正常工作。 任何帮助都会受到赞赏,即使这是我应该如何定义我的关系。

    我无法将用户链接到表(job_user)中的作业,因为这已经在其他地方定义为多对多关系,因为管理员(用户)可以创建许多作业,并且许多管理员可以创建作业。

    如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:3)

要创建出价表(根据评论),您可以将其视为交叉点实体。

<!-- User.php -->
//should recognize user_id,job_id by itself
public function bidsMade() {
  return $this->belongsToMany('App\Job','bids')->withPivot('status','proposal');
}

<!-- Job.php -->
//should recognize user_id,job_id by itself
public function bidsRecieved() {
  return $this->belongsToMany('App\User','bids')->withPivot('status','proposal');
}