php - Laravel 5.4 结合两个集合

标签 php mysql laravel

所以我有两个集合,salescosts

现在我需要将它们组合成一个集合来满足我的 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');

这是我对这两个集合查询:

$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

最佳答案

像使用集合merge()函数

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

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

关于php - Laravel 5.4 结合两个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580603/

相关文章:

php - 如何将多个标题设置为标题一次并依赖其下的值 Laravel

php - MySQL InnoDB 基于其他列的组合自动增加列

PHP MySQL 获取锁

mysql - Laravel:路线 [PackageController.fetch] 未定义

linux - 无法为 Imageick 执行 GS 脚本

php - 将命名的 HTML 实体转换为数字 HTML 实体

php - 开源聊天应用程序?

mysql - 查询选择记录

mysql - 获取同一表中列中具有匹配值的行

javascript - VueJS : How to Access the Previous Item in v-repeat