Nisarg Bhavsar
Nisarg Bhavsar

Reputation: 956

Eloquent relationship for multiple table

I am working in laravel5.4. I have created four table as ticket, users, and company. Here, I have stored users id in ticket table. And stored company id in users table.

Here, I want to show ticket's user name with that users company name.

Here, I have create relation for it that looks like below.

Ticket model :

public function requesters(){
    return $this->belongsTo('App\User','requester_id');
}

Here requester_id is who create ticket.

Users model :

public function company()
{
    return $this->belongsTo('App\Models\Admin\Company');
}

Company model :

public function Users()
{
    return $this->hasOne('App\Users');
}

Here, I have written query to get users information that looks like below.

Ticket::with('requesters')->orderBy('subject','asc')->paginate(10);

Now, I want to fetch company information or request_id So what changes should I have to do in this query to fetch company info along with ticket and users ?

Upvotes: 1

Views: 9744

Answers (2)

Laerte
Laerte

Reputation: 7083

Try this, it should work for this case:

Ticket::with('requesters')
      ->with('requesters.company')
      ->orderBy('subject','asc')->paginate(10);

Upvotes: 0

Marcin Nabiałek
Marcin Nabiałek

Reputation: 111889

If you want to to Eager load multiple relationship you can put them all in single with like this:

Ticket::with('requesters','requesters.company')->orderBy('subject','asc')->paginate(10);

but if you load nested relationship you can use shorter notation - you can omit parent relationship, so it's enough to use here:

Ticket::with('requesters.company')->orderBy('subject','asc')->paginate(10);

Upvotes: 5

Related Questions