Skip to content

Instantly share code, notes, and snippets.

@M-Abdullahi
Forked from sander3/mp-1-g2.md
Created December 8, 2020 09:14
Show Gist options
  • Save M-Abdullahi/1df6ef80a80bfef6163597bbf209b239 to your computer and use it in GitHub Desktop.
Save M-Abdullahi/1df6ef80a80bfef6163597bbf209b239 to your computer and use it in GitHub Desktop.
Medium post 1, Gist 2
$teams = App\Team::with([
    'portfolios' => function ($query) use ($user) {
        // Only include portfolios where...
        $query->whereHas('wallets', function ($query) use ($user) {
            // ...there are wallets...
            $query->whereHas('transactions', function ($query) {
                // ...with pending transactions...
                $query->whereStatus('pending');
            });

            // ...to be received by the given user.
            $query->where('walletable_id', $user->id);
            $query->where('walletable_type', App\User::class);
        });
    },
    'portfolios.wallets' => function ($query) use ($user) {
        // Second layer of constraints
        $query->whereHas('transactions', function ($query) {
            $query->whereStatus('pending');
        });

        $query->where('walletable_id', $user->id);
        $query->where('walletable_type', App\User::class);
    },
    'portfolios.wallets.transactions' => function ($query) {
        // Third and final layer of constraints
        $query->whereStatus('pending');
    },
])->get();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment