I'm new to defining relationships and frameworks all together, I´m just used to raw sql. Did my homework (google + laravel documentation) but I think I'm just not understanding it properly.
Heres is the relevant information: User Table:
Table: Users
id - int (auto increment)
username - varchar
Challenges Table:
Table: Challenges
id - int (auto increment)
name - varchar
User_challenge_links
Table User_challenge_links
id - int (auto increment)
user_id - int
challenge_sub_categories_id - int
Challenge_sub_categories
Table Challenge_sub_categories
id - int (auto increment)
category_id -
sub_category_id -
challenge_id -
So my goal.. user->challenges.
class User extends Eloquent
{
protected $table = "users";
public function challenges() {
// get user-> challenges
}
}
The relationships:
- A user has many User_challenge_links
- A User_challenge_link has a challenge_sub_categories_id (thus a challenge_sub_category)
- A challenge_id from challenges_sub_categories matches a challenge in the challenges table
Any help, even pointing me in the right direction will be much appreciated!
Edit: example data: Users Data
Users
id name
1 "Sjaak"
2 "Henk"
Categories Data id name 1 "Foo" 2 "Bar"
Sub_categories Data id name 1 "SubFoo" 2 "SubBar"
Challenges Data id name 1 "Swing dat Foo" 2 "Bar all the things" 3 "Foo The Bars"
Challenge_sub_categories Data
id category_id sub_category_id challenge_id
1 1 1 1
2 2 1 1
3 1 2 2
4 2 1 3
5 2 2 2
User_challenge_links Data
id user_id Challenge_sub_categories_id
1 1 1
2 1 3
3 2 2
4 2 3
5 2 4
Dataflow:
A user can create categories or use existing ones and link challenges to them (existing or new). However a user can also choose to use a sub category, which he then links to a category and link challenges to that instead.
So, a category is mandatory, but a sub_category isn't. If however a sub_category is used (again.. existing or new) the challenge will be connected to that sub category.
Note: A sub category CAN be connected to multiple categories
category - House
sub_category - Cleaning
Challenge - getting special soap
category - Car
sub_category - Cleaning
Challenge - getting special soap
category - Showering
Challenge - getting special soap
These are some possible situations
This setup should get you going. I tried to keep the naming as simple as possible.
Defining your Eloquent Models
Using your Eloquent Models ... just some exmaples of what you can do.
References and suggested reading:
Laravel Eloquent Relationships
belongsTo
belongsToMany
hasMany
Querying relations
Model::has()
Eager Loading
Model::with()
Dynamic Properties for Accessing Relations Resolve
$model->relationship
Inserting related Models
attach()
associate()
Query Scopes
Working with Pivot tables If you need to retrieve extra data from the pivot table.