user9752285
user9752285

Reputation:

Counting columns with if conidition in query

Counting only columns in which, Buy_Rate is more than Sell_Rate.

My query is not resulting as per expected, it is resulting me wrong.

$user_id = Auth::user()->id;
$losing_trades_count = FinalTrade::where('user_id', '=', $user_id)->where('buy_rate', '<', 'sell_rate')->get()->count();

Inverse: If sell_rate is more than buy_rate then only, count the columns.

Upvotes: 0

Views: 42

Answers (2)

M Khalid Junaid
M Khalid Junaid

Reputation: 64476

You can use whereColumn

$losing_trades_count = FinalTrade::where('user_id', '=', $user_id)
                                 ->whereColumn('buy_rate', '<', 'sell_rate')
                                 ->count();

Also there is no need to call get() when you need count() from query builder

Upvotes: 2

Chamara Abeysekara
Chamara Abeysekara

Reputation: 1322

laravel eloquent where don't support comparing columns. so you need use raw SQL in order to compair two columns. you can do something like,

$user_id = Auth::user()->id;
$losing_trades_count = FinalTrade::where('user_id', '=', $user_id)->whereRaw('buy_rate < sell_rate')->get()->count(); 

hope this helps!

Upvotes: 1

Related Questions