Fetch all linked accounts in Laravel using Eloquent ORM.

Updated: Jan 27, 2025

Fetch all linked accounts in Laravel using Eloquent ORM.

To fetch all linked accounts in Laravel using Eloquent ORM, you would first need to define the relationships between your models. Let's assume we have two models: User and Account. A user can have multiple accounts, and each account belongs to a user.

Here's how you can define the relationships in your models:

// User.php
class User extends Model
{
    public function accounts()
    {
        return $this->hasMany(Account::class);
    }
}

// Account.php
class Account extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Now that we have defined the relationships, we can use Eloquent ORM to fetch all linked accounts for a user. Here's how you can do it:

// Fetch all linked accounts for a user with ID 1
$user = User::find(1);
$accounts = $user->accounts;

// Or you can use eager loading to avoid N+1 queries
$userWithAccounts = User::with('accounts')->find(1);
$accounts = $userWithAccounts->accounts;

In the first example, we are first fetching the user with ID 1 using the find method, and then we are fetching all of its related accounts using the accounts relationship.

In the second example, we are using eager loading to fetch both the user and its related accounts in a single query, which is more efficient and avoids the N+1 problem. We are using the with method to load the accounts relationship eagerly, and then we can access the related accounts using the same accounts relationship as before.