0

私は MVC コンポーネントに取り組んでおり、joomla 2.5 の 2 つのテーブルからデータを取得していますが、フライト情報の運賃にはさまざまな種類があるため、テーブルに出力を表示すると重複した値が表示されるという問題がありました。サンプル コードは次のとおりです。

クエリ

$query->select('f.flight_name,f.flight_code,f.flight_dep_date,f.flight_ari_date,f.flight_dep_time,f.flight_ari_time,f.flight_dep_city,f.flight_ari_city,f.flight_child_id,d.flight_id,d.fair_type,d.fair');
        $query->from('#__fairinfo as f,#__faredescription as d');
             $query->where('f.flight_child_id = d.flight_id');

ビューで

<?php foreach($this->items as $i => $value):
?>
    <tr class="row<?php echo $i % 2; ?>">
        <td>
            <?php echo $value->flight_child_id; ?>
        </td>
        <td>
            <?php echo JHtml::_('grid.id', $i, $value->flight_child_id); ?>
        </td>
        <td><?php echo $value->flight_name; ?></td> 
            <td><?php echo $value->flight_code; ?></td>
            <td><?php echo $value->flight_dep_date; ?></td>
            <td><?php echo $value->flight_ari_date; ?></td>
            <td><?php echo $value->flight_dep_time; ?></td>
            <td><?php echo $value->flight_ari_time; ?></td>
            <td><?php echo $value->flight_dep_city; ?></td>
           <td><?php echo $value->flight_ari_city; ?></td>
           <td><?php    
         echo $value->fair_type; 
             echo $value->fair; ?>
            </td>
         </tr>
<?php endforeach; ?>

こちらがアウトプットです

4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSmart7,566.00 INR  
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoFlexi7,829.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoBusiness9,718.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GOPROMO(ROUNDTRIP)7,136.00 INR
4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSpecial Sold out/Not

行 4 は 5 種類の運賃があるため、5 回印刷されます。

4

2 に答える 2

1

このようにしてください

$query->select('f.flight_child_id,f.flight_name,f.flight_code,f.flight_dep_date,f.flight_ari_date,f.flight_dep_time,f.flight_ari_time,f.flight_dep_city,f.flight_ari_city,f.flight_child_id');
        $query->from('#__fairinfo as f');                

ビューで

<?php foreach($this->items as $i => $value):
?>
    <tr class="row<?php echo $i % 2; ?>">
        <td>
            <?php echo $value->flight_child_id; ?>
        </td>
        <td>
            <?php echo JHtml::_('grid.id', $i, $value->flight_child_id); ?>
        </td>
        <td><?php echo $value->flight_name; ?></td> 
            <td><?php echo $value->flight_code; ?></td>
            <td><?php echo $value->flight_dep_date; ?></td>
            <td><?php echo $value->flight_ari_date; ?></td>
            <td><?php echo $value->flight_dep_time; ?></td>
            <td><?php echo $value->flight_ari_time; ?></td>
            <td><?php echo $value->flight_dep_city; ?></td>
           <td><?php echo $value->flight_ari_city; ?></td>
           <td><?php 
                $model = $this->getmodel('Your model name');
                echo nl2br($model->functionname($value->flight_child_id));
            ?></td>
         </tr>
<?php endforeach; ?>

モデル機能

functionname($id) {
        $db     = JFactory::getDBO();
        $query->select('d.flight_id,d.fair_type,d.fair');
        $query->from('#__faredescription as d');
        $query->where('d.flight_id ='.$id);
        $db->setQuery( $query );
        $rows    = $db->loadObjectList();
        foreach($rows as $row) {
            $rowss[] = $row->fair_type.','.$row->fair;
        }
        $row    = implode("\n", $rowss);
            return $row;
 }
于 2012-08-31T06:31:53.130 に答える
0

重複値の理由:#__fairinfoテーブルには 1 つの行があり、#__faredescriptionテーブルには 4 つの行があるため、重複する値のみが表示されます。

あなたの期待はこのように見えます

4 G8-334    G8-334  2012-05-22  2012-05-22  11:10:00    13:05:00    MUMBAI (TERMINAL 1B)    NEW DELHI (TERMINAL 1D)     GoSmart7,566.00 INR  
                                                                                                                        GoFlexi7,829.00 INR
                                                                                                                        GoBusiness9,718.00 INR
                                                                                                                        GOPROMO(ROUNDTRIP)7,136.00 INR
                                                                                                                        GoSpecial Sold out/Not

右 ?

于 2012-08-31T05:23:59.033 に答える