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

标签 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. 每个出价仅与一名用户和一项职位相关联。

示例: 用户 1 对作业 1 提出 300 英镑的提案。这将创建一个 ID 为 1 且提案为 300 英镑的出价。数据透视表将包含用户 ID(1)、作业 ID(1) 和出价 ID(1) 以及默认设置为“待处理”的状态。

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

出价作业用户:

bid_id | user_id | job_id | status

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

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

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

最佳答案

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

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

关于php - Laravel 5.1 - 3 个表之间的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433482/

相关文章:

php - Laravel 永无止境的 EXEC

mysql - laravel5-如何隐藏withPivot的特定列?

php - Laravel 向多个收件人发送邮件,收件人地址为 "Name"

php - 使用 ajax jquery php mysql 检查用户名

php - Laravel Volt 路线

php - jQuery,更新正确的字段

Laravel Dusk + Vue 与 ElementUI

php - php 是以多线程还是多进程的方式处理并发请求的?

laravel - 如何在包中安排 Artisan 命令?

laravel - 如何使用 Laravel Mix 将 Vue block 文件放入 public/js 中?