2016-12-16 13 views
-1

ディーラーが一括して購入できる車のデータベースがあります。彼らは私たちのサイト上のフォームを記入し、署名注文の注文書を送ります。HTMLテーブルの "ユニークな"行を作成するためのPHPオブジェクトのグループ化

この注文書には、契約書に署名すれば配送される車の概要を示す表があります。

私はデータベースに複数のクエリを実行せずに車をグループ化しようとしています。ここ 表の簡単なレイアウトで

<tbody> 
    <tr> 
     <td>Nissan</td> 
     <td>Altima</td> 
     <td>CVT</td> 
     <td>2</td> 
     <td>20000</td> 
     <td>40000</td> 
    </tr> 
    <tr> 
     <td>Nissan</td> 
     <td>Maxima</td> 
     <td>Automatic</td> 
     <td>3</td> 
     <td>30000</td> 
     <td>90000</td> 
    </tr> 
    <tr> 
     <td>Nissan</td> 
     <td>GTR</td> 
     <td>Automatic</td> 
     <td>1</td> 
     <td>130000</td> 
     <td>130000</td> 
    </tr> 
    <tr> 
     <td>Nissan</td> 
     <td>GTR</td> 
     <td>Manual</td> 
     <td>2</td> 
     <td>130000</td> 
     <td>260000</td> 
    </tr> 
</tbody> 

データを次のように私は(それが大きいため)データベースから1つのプルを行い、テーブル本体を製造できるようにする

<table> 
    <thead> 
     <tr> 
      <th>Make</th> 
      <th>Model</th> 
      <th>Transmission</th> 
      <th>Quantity</th> 
      <th>Price per Vehicle</th> 
      <th>Total Cost</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

8つの別々のオブジェクトとして私のテーブルから来る。私は、応答を取り込み、3つのキー属性でオブジェクトをグループ化する配列(簡単に表に変換できる)を返すスクリプトを作成しようとしています。

応じ数量列一致するテーブル内の1つの新しい行を表すべきである上記の属性のすべての3つに応答して別のオブジェクトに一致するオブジェクトを「モデル、及び送信を行います」。

私のアプローチのアプローチは、データベースのクエリを続けることでしたが、それはあまりにも無駄でした。 私は1つの属性

$noRepeatMake = []; 
$i = 1; 
foreach($cars as $car){ 
    if(!in_array($car->make, $noRepeatMake)) { 
     $count .= Cars::where('BAID', $id)->where('make', $car->make)->where('model', $car->model)->where('trans', $car->trans)->count(); 
     if ($i < $cars->count()) { 
      $count .= ","; 
     } 
     array_push($noRepeatMake, $car->make); 
    } 
    $i++; 
} 
$roomCount = explode(",", $roomCount); 
+0

この問題を解決する必要があります。これがSQLデータベースの場合、 'group by'を使用するクエリでテーブルの要素を生成できるはずです。 – trincot

+0

@trincot yup ...そのトリックでした! –

+0

OK、回答として投稿しました。 – trincot

答えて

0

これはクエリで解決する必要があります。

これがSQLデータベースの場合は、(前述の3つのフィールドの)group byを使用するクエリでテーブルの要素を生成できるはずです。その後、他の数値フィールド(summinmax、...のように)に集計を適用することができます。

0

オブジェクトを扱うとき、私も同じ問題を持っているに一致する方法を見つけ出すことができました。 は、私はあなたのケースでは、あなたが3つのキー属性のグループからキーを作成することができると思います。

例:$キー= MD5(+モデル+伝送を行う)

だから、任意のオブジェクトが同じMD5ハッシュを得ました、同じ配列

$配列[MD5(+モデル+伝送を行う)]

・ホープ、このヘルプ

にストアされます10
+0

私のアプローチよりもはるかにスマートです。私はこれを試してください –

関連する問題