Thet Hmuu
Thet Hmuu

Reputation: 31

Laravel - Filtering a Model by Condition between "a Field and Its Relationship Model Field"

I have these two models with one to one relationship.

"products"

"product_data"

I want to get the count of product_data where its on_hand is less than its related product's minimum_required.

I've tried subqueries and I still can't figure it out. The query I want may looks something like this.

$low_products_count = ProductDetail::where('on_hand', '<', Product::select('minimum_required')->count();

Upvotes: 2

Views: 40

Answers (2)

Ashiful Islam Prince
Ashiful Islam Prince

Reputation: 238

I am not experienced with the eloquent So here, I share my knowledge with the query builder.

You can do like this->

$low_products_count=DB::table('products')
                    ->join('product_data','product_data.product_id','=',
                     'product.id')
->where('product_data.on_hand','<','products.minimum_required')->get();

You can use this concept.

Upvotes: 1

OMR
OMR

Reputation: 12188

you can join the tables then use 'whereColumn':

 $low_products_count =Product::join('product_data','product_data.product_id','=',
    'products.id')->whereColumn('product_data.on_hand','<','products.minimum_required')->get();

Upvotes: 1

Related Questions