我的查询代码有什么问题?

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');