Php 按基于两列的集合排序

Php 按基于两列的集合排序,php,laravel,collections,Php,Laravel,Collections,因为我有一个简单的收藏 $collection = collect([ ['product' => 'Desk', 'price' => 200, 'cost'=>250], ['product' => 'Chair', 'price' => 100, 'cost'=>200], ]); 我通过简单地执行price-income,计算vuejs中的收入,在这种情况下,我将得到: -五十 -一百 现在我想通过将结果降序排序,如下所示: -一百

因为我有一个简单的收藏

$collection = collect([
    ['product' => 'Desk', 'price' => 200, 'cost'=>250],
    ['product' => 'Chair', 'price' => 100, 'cost'=>200],
]); 
我通过简单地执行
price-income
,计算vuejs中的收入,在这种情况下,我将得到:

  • -五十
  • -一百
  • 现在我想通过将结果降序排序,如下所示:

  • -一百
  • -五十

  • 想知道是否有一种方法可以在收藏中订购

    您可以在Laravel中执行此操作,并将数据传递给视图(如果它是一个选项)。使用以下步骤和方法:

    或者,您可以使用该方法向集合中添加一个新列,以便能够使用任何JS脚本对其进行排序:

    $collection->transform(function ($i) {
        $i['difference'] = $i['price'] - $i['cost'];
        return $i;
    });
    

    我尝试了'return$tableRows->sortByDesc(function($row){return$row['price']-$row['cost'];})`但没有work@PrStandup刚刚用之前显示的数据尝试了刚才显示的代码,它对我有效。您可能认为
    -50
    小于
    -100
    ,但事实并非如此。因此,您可能希望通过将
    sortBy
    替换为
    sortByDesc
    并将
    sortByDesc
    替换为
    sortBy
    来反转它的逻辑,因为它添加了“0”:{data},“1”:{data}如何删除keys@PrStandup要删除键,请添加
    ->values()
    我就是这么做的,太棒了:)
    $collection->transform(function ($i) {
        $i['difference'] = $i['price'] - $i['cost'];
        return $i;
    });