【问题标题】:Laravel 5.4 Combining two collectionsLaravel 5.4 结合两个集合
【发布时间】:2021-02-10 17:03:41
【问题描述】:

所以我有两个集合,sales 和 costs。

现在我需要将它们合并到一个集合中以满足我的 foreach 条件(我不确定我是否可以在一个 foreach 中使用两个集合)

原始查询:

//Raw MySQL Queries for Sales
$total_sales = DB::raw('SUM(receipts.total) as totalSales');
$year_receipt_created = DB::raw('YEAR(receipts.created_at) as year');

//Raw MyQSL Queries for Cost of Goods Sold
$total_cost = DB::raw('(SUM(qty * cost)) as totalCost');
$year_sold = DB::raw('YEAR(created_at) as year');

这是我的query 这两个collections:

$sales = DB::table('receipts')
            ->where('status', 'served')
            ->where('mode', 'restaurant')
            ->select($total_sales, $year_receipt_created)
            ->groupBy('year')
            ->get();

$costs = DB::table('orders')
            ->where('status', 'served')
            ->select($total_cost, $year_sold)
            ->groupBy('year')
            ->get();

我尝试过测试的事情:将集合转换为数组并尝试合并它们,但我似乎遇到了问题。

我恢复了它,因为我不知道这是否是最好的方法。请让我知道什么是最好的方法。

更新:这是这两个查询的输出,希望对您有所帮助:

销售

{
    totalSales: "960.00",
    year: 2017
}

费用

{
    totalCost: "792.00",
    year: 2017
}

我尝试了什么:(它说找不到totalCost)

//Combining TWO collections into ONE Array
$gross_profit = array();
foreach (array_merge($sales, $costs) as $data) 
{
    $keys = array('total_sales', 'total_cost', '$year');
    $values = array($data->totalSales, $data->totalCost, $data->year);
    $gross_profit[$data] = array_combine($keys, $values);
}

**已解决:**我用collection merge(不知道有这样的东西)

我使用的语法是$result = $sales->merge($costs)。

结果如下:

{
    totalSales: "960.00",
    year: 2017
},
{
    totalCost: "792.00",
    year: 2017
}

回答者:Sagar Gautam

【问题讨论】:

  • 请添加$sales和$costs的输出。
  • @SagarGautam 编辑了我原来的帖子。希望能帮助到你。 :)
  • I seem to have problems - 有什么问题?你到底尝试了什么?
  • 你尝试过集合合并吗?喜欢$result = $sales->merge($costs)
  • 请同时添加预期结果

标签: php mysql laravel


【解决方案1】:

使用集合merge()类似函数

$result = $sales->merge($costs);

您可以查看文档https://laravel.com/docs/5.4/collections#method-merge

【讨论】:

  • 谢谢!为了确保,在刀片内部调用数据就像:$result->totalCost、$result->totalSales、$result->year?
  • 是的,但是foreach 可能会出错,因为第一个没有totalCost,第二个没有totalSales
  • 哦,天哪,我想我会遇到问题。 :o 我会在 90 分钟后再次询问,无论如何我们设法将它们结合起来。 :D
  • 你在电子商务项目中工作吗?你的所有问题都像订单销售成本等:D:D
  • 我正在开发适用于餐厅和零售商的通用 POS 和库存系统。它有一堆设置,所以它会很灵活。我的销售报告需要这些过去的问题。肯定是头疼。 :D
猜你喜欢
  • 2016-06-05
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2021-04-11
  • 2019-09-08
  • 1970-01-01
  • 2018-06-03
  • 2017-10-05
相关资源
最近更新 更多