Laravel - 减少阵列大小

时间:2016-08-03 06:41:41

标签: php arrays laravel doctrine-orm

这是我的代码:

控制器:

 $userOrder = $doctrineOrderRepository->getOrders(Auth::id());

原则:

   public function getUserOrders( $userId ) :array
    {

        $results = $this->_em->createQueryBuilder()
            ->select( 'o.restaurantId as rtId, o.oCount, o.oPrice ,
                     o.oCreated', 'o.oId' )
            ->from( $this->entityClass, 'o' )
            ->where( "o.userId = '{$userId}'" )
            ->andWhere( "o.orderItemCount > '0'" )
            ->andWhere( "o.orderTotalPrice > '0'" )
            ->getQuery()->getArrayResult();

        return $results;
    }

我从我的数据库使用Doctrine:

获取此数组
array:1 [▼
  0 => array:5 [▼
    "rtId" => 154
    "oCount" => 2
    "oPrice" => 33900
    "oCreated" => DateTime {#677 ▶}
    "oId" => 17428
  ]
]

我在不同的情况下使用这种Doctrine方法。在这种情况下,我只使用所有列表中的两项: rtId oCount

那么,如何修改$ userOrder以将结果数组转换为此波纹管数组?

array:1 [▼
  0 => array:2 [▼
    "rtId" => 154
    "oCount" => 2
  ]
]

2 个答案:

答案 0 :(得分:1)

在控制器中预告你的$ userOrder并取消设置这样的值

$newArr = array();

    foreach($userOrder as $ar)
    {
        unset($ar['oPrice']);
        unset($ar['oCreated']);
        unset($ar['oId']);
        $newArr[] = $ar;
    }

dd($newArr);

你会得到这个结果..

array:1 [▼
  0 => array:2 [▼
    "rtId" => 154
    "oCount" => 2
  ]
]

答案 1 :(得分:0)

如果您使用的是Laravel,则可以使用永远方便的collection类。它有许多有用的方法。在这种情况下,您可以这样做:

$cleanedResults = collect($results)->map(function($item) {
    return collect($item)->only(['rtId', 'oCount']);
})->toArray();