Сортировка данных, которые не работают в laravel

#jquery #laravel #eloquent #datatables #yajra-datatable

Вопрос:

У меня есть таблица, в которой я могу получать данные из базы данных. Здесь я использую две разные таблицы для сопоставления записи и, соответственно, получаю значения, если данные обеих таблиц совпадают. Значения в базе данных разделены»,», которые я могу разделить с помощью функции разнесения. Теперь проблема в том, что каждый элемент в базе данных начинается с», » и возвращает первую строку пустой. Теперь, когда я использую Datatable для отображения данных, сортировка здесь не работает, перепробовал слишком много решений из разных блогов, но для меня ничего не работает. Я думаю, потому что он возвращает первую строку, так как сортировка пустых строк не работает.

Вот мое мнение:

  <table id="tablevar" class="table table-sm">
      <thead>
        <tr>
          <th>
            Top Correlators
          </th>
          <th>
            Positive/Negative Correlation
          </th>
        </tr>
      </thead>
      @foreach(explode(', ', $detail->Topcorrelators) as $row)

          <tr>
              <td>
                {{ $row }}
              </td>
              @foreach($Correlations_list as $corr)
                @if($corr->Variable == $row )
                  <td>
                     @if($corr->Corr > 0)
                    <div class="progress">
                        <div class="progress-bar large progress-bar-striped" role="progressbar" style="width: 100%;background-color:#e9ecef;" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div> 
                        <div class="progress-bar progress-bar-striped" role="progressbar" style="width: 100%;background-color:#CA0088 " aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div>
  
                        </div>
                        Positive Correlator( {{ $corr->Corr }} )
                    @else
                    <div class="progress">
                        <div class="progress-bar large progress-bar-striped" role="progressbar" style="width: 100%;background-color:#EAB330;" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div> 
                        <div class="progress-bar large progress-bar-striped" role="progressbar" style="width: 100%;background-color:#e9ecef;" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div> 
                        </div>
                        Negative Correlator( {{ $corr->Corr }} )
                    @endif
                  </td> 

                  @endif
              @endforeach
          </tr>
      @endforeach
    </table>   
 

и это мой код контроллера:

  $Correlations_list=Correlation::all();
            return view('admin.members.Detailspage',compact('detail','Correlations_list'));
 

и это мой сценарий:

 $('#tablevar').DataTable({
      "paging": true,
      "lengthChange": false,
      "searching": false,
      "ordering": true,
      "info": true,
      "autoWidth": false,
      "responsive": true,
    });
 

Какая-нибудь помощь ?

Комментарии:

1. Почему бы вам просто не проверить пустое значение и не пропустить строку для этого?

2. @Frnak Можете ли вы сказать мне, как я могу это сделать в приведенном выше коде…?

3. @Frnak поскольку я новичок в laravel, я не уверен, как я могу сделать это в blade?

Ответ №1:

В этом случае вы можете проверить наличие пустого значения

 @foreach(explode(', ', $detail->Topcorrelators) as $row)
  @if(is_empty($row))
   @continue;
  @endif
  // ... rest of your code
@endforeach;
 

Это должно пропустить эту пустую строку и решить вашу проблему. Вы найдете более подробную информацию здесь: https://laravel.com/docs/5.4/blade#loops