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

时间:2018-08-03 12:40:17

标签: laravel laravel-query-builder

请在下面的代码中查找表数据

    $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
  ]
}

实际上,我正试图将两行相乘。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您的问题是您要在循环中调用集合的pluck,而不是利用集合的项目。

拥有物品本身时,不需要收集方法:

foreach ($all_trades as $item) {
    $product = $item->buy_rate * $item->quantities;
}

您必须以某种方式利用$product,否则它将在循环的每次迭代中被覆盖,但是我不知道您要如何处理此乘法问题的乘积。您很可能不想分配$value作为参考,并像在问题中一样覆盖它。

如果您尝试将产品与收藏夹项目相关联,则可以添加一个新属性:

foreach ($all_trades as $item) {
    $item->product = $item->buy_rate * $item->quantities;
}

现在$ all_trades中的每个项目都会有一个名为product的新属性,具有相应的值。由于对象始终通过引用传递,因此您无需使用&$item

答案 2 :(得分:0)

如果您在查询中进行乘法运算,则可能会获得更好的成功:

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