#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