Skip to main content

Eloquent Relationship Explained (ONE TO MANY)

Suppose you have two tables:

users and posts tables.

users table includes:
id,name,email

posts table includes:
id,title,body,user_id

One to many relationship:

Go to User model and write:


public function posts(){
 return $this->hasMany('App\Post');
}

Look at the function naming convention. It's plural as it is one to many relationship.

Store:

$user->posts()->save($post);

Here, $user variable comes from findorfail($id). and $post variable has taken the
requested data from user. I haven't shown all of this in details here as it is only to
understand how one to many relationship actually works.


Show:
foreach($user->posts as $post){
   echo $post->title."<br>";
}

Update:
$user->posts()->where('id','=',2)->update(['title'=>'your updated title','body'=>'your updated body');

Delete:
$user->posts->whereId(1)->delete();

To delete all the users posts:
$user->posts->delete();


Thanks for reading.


Comments

Popular posts from this blog

SQL: sneak peek

show databases; use mysql; show tables; select * from component; describe component; create database sql_intro; show databases; use sql_intro; create table emp_details (Name varchar(25), Age int, gender char(1), doj date, city varchar(15), salary float); describe emp_details; insert into emp_details  values("Jimmy",35,"M","2005-05-30","Chicago",70000), ("Shane",30,"M","1999-06-25","Seattle",55000), ("Marry",28,"F","2009-03-10","Boston",62000), ("Dwayne",37,"M", "2011-07-12","Austin", 57000), ("Sara",32,"F","2017-10-27","New York",72000), ("Ammy",35,"F","2014-12-20","Seattle",80000); select * from emp_details; select distinct city from emp_details; select count(name) as count_name from emp_details; select avg(salary) from emp_details; select name, age...