2016-11-12 2 views
0

Я пытаюсь упорядочить некоторые субтитры под основной плиткой, но повторяет заголовок.Как организовать субтитры под заголовком в Yii2

<div id="downloads" class="tab-pane" role="tabpanel"> 
    <?php 
    $product_id = $model->id; 
    $downloads_model = Printingmachinedownloads::find()->where(['productid'=>$product_id])->all(); 
    foreach ($downloads_model as $doc) { 
     $doc_type = $doc['type']; 
     $doc_label = $doc['documentlabel']; 
     $doc_title = $doc['documentname']; 
     ?> 
     <div class="amazingcarousel-container-1 tab_style"> 
      <h3><?php echo $doc_type;?></h3> 
      <a target = '_blank' href="<?php echo Yii::$app->homeUrl?>images/printingmachine/downloads/<?php echo $doc_title; ?>"> 
       <?php echo $doc_label ?> 
      </a> 
     </div> 
     <?php 
     } 
     // $doc_title = $downloads_model[0]->documentlabel; 
     ?> 
    </div> 
</div> 

Выход:

Current O/P

Что мне нужно

Brochures 
abc 
def 
ghi 


Specificationsheet 
xyz 
lmn 
opq 

Может кто-нибудь сказать мне, что я должен делать?

Заранее спасибо

ответ

0

Если у вас нет проблемы с новой версией MySQL группы по концепции, вы можете использовать что-то вроде:

... 
$downloads_model = Printingmachinedownloads::find()->where(['productid'=>$product_id])->groupBy(['type'])->all(); 

foreach($downloads_model as $doc): 
    <div class="amazingcarousel-container-1 tab_style"> 
    <h3><?= type['type'] ?></h3> 
    $subtitles = Printingmachinedownloads::find()->where(['productid'=>$product_id, 'type' => $doc['type'])->all(); 
    foreach($subtitles as $subtitle): 
    <a target = '_blank' href="<?php echo Yii::$app->homeUrl?>images/printingmachine/downloads/<?php echo $subtitle['documentname']; ?>"> 
    <?php echo $subtitle['documentlabel'] ?> 
    </a> 
enforeach; 
</div> 
endforeach; 
... 

Если есть проблемы с группой по вы можете использовать немного Некоммерческие стандартный метод, это не лучший способ и эффективный способ:

$downloads_model = Printingmachinedownloads::find()->where(['productid'=>$product_id])->orderBy(['type'=>SORT_DESC])->all(); 

$previous_title = ''; $iteration = 1; 
foreach($downloads_model as $doc): 
$subtitles = Printingmachinedownloads::find()->where(['productid'=>$product_id, 'type' => $doc['type'])->all(); 
$count = count($subtitles); 

$previous_title = $previous_title ?: $doc['type']; 

if($previous_title == $doc['type'] && $count == $iteration): 

     <div class="amazingcarousel-container-1 tab_style"> 
     <h3><?= $previous_title ?></h3> 
     foreach($subtitles as $subtitle): 
     <a target = '_blank' href="<?php echo Yii::$app->homeUrl?>images/printingmachine/downloads/<?php echo $subtitle['documentname']; ?>"> 
     <?php echo $subtitle['documentlabel'] ?> 
     </a> 
    enforeach; 
    </div> 

    $previous_title = ''; $iteration = 1; 
else: 
    $iteration++; 
endif; 
endforeach; 

Я не тестировал его, но что-то подобное должно работать. Но мое предложение и эффективный способ будет использовать реляционные таблицы 1 title container другую связанную таблицу, содержащую подзаголовки.

Смежные вопросы