2016-08-03 2 views
0

が私のコードで配列のサイズを小さく:Laravel - ここ

コントローラー:

$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; 
    } 

私は教義を使用して、私のデータベースからこの配列を取得:

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

私はさまざまな状況でこのDoctrineメソッドを使用しています。この場合、私はちょうど、すべてのリストの2つの項目を使用します。RTIDoCount

だから、どのようにこの怒鳴る配列に結果の配列を変換するために、$のuserOrderを変更するには?

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

select stmtの列を減らしますか? – jitendrapurohit

+0

私は前に言ったように、私は別のコントローラでそのメソッドを使うので、私は選択項目を減らしたくありません。 – AFN

+2

foreachを使用して設定を解除しますか? – jitendrapurohit

答えて

1

コントローラと、この

$newArr = array(); 

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

dd($newArr); 

のような未設定の値に、あなたはこの結果をforeachのあなたの$ userOrderを取得します。..

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

あなたはLaravelを使用している場合、あなたは永遠を使用することができます便利なcollectionクラス。これには数多くの便利な方法があります。この場合、次のようにすることができます。

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