我的查询代码有什么问题?
What is the wrong with my code for query?
请在下面找到我的代码以从 table
获取数据
$all_trades = FinalTrade::where('user_id', '=', $user_id)->where('market_id', '=', $market_id)->get();
$numbers_of_entries = $all_trades->count();
$l=0;
foreach ($all_trades as &$value) {
$value = $all_trades->pluck('buy_rate') * $all_trades->pluck('quantities');
$l++;
}
DD($l);
我的 $all_trades->pluck('buy_rate')
和 $all_trades->pluck('quantities')
有数组结果..我怎样才能相乘并得到数组结果?
浏览器中 $all_trades->pluck('buy_rate')
的结果。
Collection {#1186 ▼
#items: array:12 [▼
0 => 2205
1 => 0
2 => 50351
3 => 0
4 => 40
5 => 1000
6 => 500
7 => 324
8 => 2342
9 => 2342
10 => 234
11 => 555656
]
}
实际上我正在尝试乘以播放两行。
$all_trades = FinalTrade::where('user_id', '=', $user_id)->where('market_id', '=', $market_id)->get();
$total =[];
foreach ($all_trades as $value) {
$total[] = $value->buy_rate * $value->quantities;
}
dd($total);
您的问题是您在循环中的 collection 上调用 pluck 而不是使用 collection.
的项目
如果您拥有项目本身,则不需要 collection 方法:
foreach ($all_trades as $item) {
$product = $item->buy_rate * $item->quantities;
}
你必须以某种方式利用 $product
,否则它只会在循环的每次迭代中被覆盖,但我不知道你想用这个乘积做什么问题。您很可能不想分配 $value
作为参考并像您在问题中那样覆盖它。
如果您尝试将产品与 collection 项目相关联,您只需添加一个新的 属性:
foreach ($all_trades as $item) {
$item->product = $item->buy_rate * $item->quantities;
}
现在 $all_trades 中的每个项目都将有一个新的 属性 命名产品和相应的值。由于 objects 总是通过引用传递,因此您不需要使用 &$item
.
如果您实际在查询中进行乘法运算,您可能会取得更好的成功:
$all_trades = FinalTrade::where('user_id', '=', $user_id)
->where('market_id', '=', $market_id)
->select("*, (buy_rate*quantities) as total")
->get();
那么除了实际条目之外,您的每个条目都将具有 total
属性,因此您可以执行以下操作:
$all_trades->pluck('total');
请在下面找到我的代码以从 table
获取数据 $all_trades = FinalTrade::where('user_id', '=', $user_id)->where('market_id', '=', $market_id)->get();
$numbers_of_entries = $all_trades->count();
$l=0;
foreach ($all_trades as &$value) {
$value = $all_trades->pluck('buy_rate') * $all_trades->pluck('quantities');
$l++;
}
DD($l);
我的 $all_trades->pluck('buy_rate')
和 $all_trades->pluck('quantities')
有数组结果..我怎样才能相乘并得到数组结果?
浏览器中 $all_trades->pluck('buy_rate')
的结果。
Collection {#1186 ▼
#items: array:12 [▼
0 => 2205
1 => 0
2 => 50351
3 => 0
4 => 40
5 => 1000
6 => 500
7 => 324
8 => 2342
9 => 2342
10 => 234
11 => 555656
]
}
实际上我正在尝试乘以播放两行。
$all_trades = FinalTrade::where('user_id', '=', $user_id)->where('market_id', '=', $market_id)->get();
$total =[];
foreach ($all_trades as $value) {
$total[] = $value->buy_rate * $value->quantities;
}
dd($total);
您的问题是您在循环中的 collection 上调用 pluck 而不是使用 collection.
的项目如果您拥有项目本身,则不需要 collection 方法:
foreach ($all_trades as $item) {
$product = $item->buy_rate * $item->quantities;
}
你必须以某种方式利用 $product
,否则它只会在循环的每次迭代中被覆盖,但我不知道你想用这个乘积做什么问题。您很可能不想分配 $value
作为参考并像您在问题中那样覆盖它。
如果您尝试将产品与 collection 项目相关联,您只需添加一个新的 属性:
foreach ($all_trades as $item) {
$item->product = $item->buy_rate * $item->quantities;
}
现在 $all_trades 中的每个项目都将有一个新的 属性 命名产品和相应的值。由于 objects 总是通过引用传递,因此您不需要使用 &$item
.
如果您实际在查询中进行乘法运算,您可能会取得更好的成功:
$all_trades = FinalTrade::where('user_id', '=', $user_id)
->where('market_id', '=', $market_id)
->select("*, (buy_rate*quantities) as total")
->get();
那么除了实际条目之外,您的每个条目都将具有 total
属性,因此您可以执行以下操作:
$all_trades->pluck('total');