Eloquent defines relationships between models.
Types
hasOne/hasMany� one-to-one/manybelongsTo� inverse relationshipbelongsToMany� many-to-many (pivot table)morphMany/morphTo� polymorphic
Eloquent defines relationships between models.
hasOne / hasMany � one-to-one/manybelongsTo � inverse relationshipbelongsToMany � many-to-many (pivot table)morphMany / morphTo � polymorphicclass User extends Model { public function posts() { return $this->hasMany(Post::class); } public function profile() { return $this->hasOne(Profile::class); } } class Post extends Model { public function user() { return $this->belongsTo(User::class); } public function tags() { return $this->belongsToMany(Tag::class); } }
<?php use Illuminate\Database\Eloquent\Model; class User extends Model { // One-to-many public function posts() { return $this->hasMany(Post::class); } // Many-to-many public function roles() { return $this->belongsToMany(Role::class); } // Has-many-through public function comments() { return $this->hasManyThrough(Comment::class, Post::class); } } // Usage $user = User::with("posts.roles")->find(1); foreach ($user->posts as $post) { echo $post->title; }
Define many-to-many between courses and students.
class Course extends Model {
public function students() {
return $this->belongsToMany(Student::class);
}
}
belongsToMany needs what?
Many-to-many requires a pivot table.
Using with() to fetch related models in one query, avoiding the N+1 query problem.