ATechGuy
ATechGuy

Reputation: 1270

How to get third relation in laravel

I have the following models: User, Device, Product.

User

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

Device

 public function user()
{

    return $this->BelongsTo('App\User');

}

public function reading()
{
    return $this->hasMany('App\Reading', 'device_id', 'part_id');
}

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

Product

 public function device()
{
    return $this->belongsTo('App\Device');
}

The following query pulls my users and all their devices, but inside that collection is not the relation from device to product.

$deviceSingles = User::with('devices')->get();

This query gets me all the products with all devices assigned to it

$deviceSinglesTwo = Product::with('device')->get();

How do I get that third relation, attached to my initial query so i can do this

$deviceSingles->device->product->title

Upvotes: 2

Views: 762

Answers (1)

Alexey Mezenin
Alexey Mezenin

Reputation: 163748

Use nested eager loading.

To eager load nested relationships, you may use "dot" syntax.

User::with('devices.product')->get()

Upvotes: 6

Related Questions