aref razavi
aref razavi

Reputation: 422

laravel eloquent use `whereHas` and `orWhereHas` with Fixed where

I have a query:

$undeliveredTransactions = Transaction::whereHas('carts.acceptedcarts', function ($query) {
        $query->where('delivered', false);
    })->orWhereHas('carts' , function ($query){
        $query->where('full_accepted' , false);
    })->where('user_id', Auth::id())->get();

The where('user_id' , Auth::id()) is fixed and necessary, but two whereHas one of them is necessary.

How can I implement this?

Upvotes: 1

Views: 352

Answers (2)

Hosserin Ibrahim
Hosserin Ibrahim

Reputation: 224

you can also use whereRelation, so your query is:

$undeliveredTransactions = Transaction::where('user_id', Auth::id())
->whereRelation('carts.acceptedcarts', 'delivered', false)
->orWhereRelation('carts' , 'full_accepted' , false)->get();

Upvotes: 1

Joundill
Joundill

Reputation: 7533

This should work, using an Eloquent subquery

$undeliveredTransactions = 
    Transaction::where('user_id', Auth::id()
        ->where(function ($q) {
            $q->whereHas('carts.acceptedcarts', function ($query) {
                $query->where('delivered', false);
            })->orWhereHas('carts' , function ($query){
                $query->where('full_accepted' , false);
            });
        })->get();

Upvotes: 3

Related Questions