这是我的代码:
控制器:
$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
]
]
答案 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();