Reputation: 103
I'm relatively new to Laravel and have been working on it in my internship for the last 3 weeks however now I have a problem.
I have 3 tables: Users, Bids, and Jobs. I want a user to be able to place a bid on the job.
The basic structure of my tables is as follows:
Users:
id | name | email | description
Jobs:
id | title | description
Bids:
id | proposal
The following criteria need to be met:
Example: User 1 makes a proposal of £300 on Job 1. This creates a bid with id 1 and proposal £300. The pivot table will contain the user id(1), the job id(1) and the bid id(1) along with the status which by default will be set to Pending.
I also want the table that links all 3 to have a status. I created one as follows:
bid_job_user:
bid_id | user_id | job_id | status
But the relationships were all wrong so syncing methods etc wouldn't work correctly if I wanted to update a status. Any help is appreciated, even if it is just how I should define my relationships.
I cannot link the user to the job in a table(job_user) as this is already defined elsewhere as a many to many relationship as managers(users) can create many jobs and jobs can be created by many managers.
If you need any more information please ask.
Upvotes: 2
Views: 1214
Reputation: 4211
To create the bid table (As per comments) you could treat it as a intersection entity.
<!-- 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');
}
Upvotes: 4