我不想在每次计算时都写查询,如何使用变量?

时间:2018-08-03 10:19:38

标签: laravel laravel-query-builder

$all_trades = FinalTrade::where('user_id', '=', $user_id)->where('market_id', '=', $market_id)->get();

我正在尝试获取所有具有(col:buy_datetime> col:sell_datetime)和(col:buy_rate * quantities)的条目。

实际上试图使它成为变量。 从$all_trades中,如何将单个列的整个记录​​存储在变量中?

例如,我要将col:quantities存储到$ abc变量中。

2 个答案:

答案 0 :(得分:1)

使用pluck从集合中获取列

$abc = $all_trades->pluck('quantities');

答案 1 :(得分:0)

您可以在哪里使用raw,这种方法允许您为WHERE语句编写原始sql代码

FinalTrade::whereRaw('buy_datetime > sell_datetime')->get();

或者您可以尝试使用数据库表达式

FinalTrade::where('buy_datetime', '>' DB::raw('sell_datetime'))->get();

对于此列buy_rate * quantities,您可以使用selectRaw方法

FinalTrade::where('buy_datetime', '>' DB::raw('sell_datetime')) ->selectRaw('buy_rate * quantities as column1') ->get();

enter image description here


`$finalTrades = FinalTrade::get(); 

$numbers_of_entries = $finalTrades->count(); 

$finalTrades->transform(function (FinalTrade $finalTrade) use 
($numbers_of_entries) { 
$finalTrade->result = ($finalTrade->quantities * $finalTrade->buy_rate) / 
$numbers_of_entries; 

return $finalTrade; 
});`