У меня есть этот запрос, где я получаю мои данные, используя нумерацию страниц:Laravel проблема при получении данных для Google диаграммы при использовании постраничной функции
$data = Mymodel::orderBy('id','desc')->paginate(10);
И у меня нет никаких проблем для отображения данных в загрузочном столе с пагинацией ссылки в файл лезвия:
<table class="table table-bordered table-responsive table-striped table-hover table-condensed">
<thead>
<tr>
<th>id</th>
<th>value1</th>
<th>value2</th>
</tr>
</thead>
<tbody>
@foreach($data as $row)
<tr>
<td>{{ $row->id }}</td>
<td>{{ $row->value1 }}</td>
<td>{{ $row->value2 }}</td>
</tr>
@endforeach
</tbody>
</table>
{{ $data->links() }}
Теперь при настройке Google линейного графика:
@section('js')
{{--Google charts--}}
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart'],'language': 'es'});
google.charts.setOnLoadCallback(drawLinechart);
function drawLinechart()
{
var record = {!!$data!!};
var data = new google.visualization.DataTable();/*http://stackoverflow.com/a/22640426/1883256*/
var rowsnumber = record.length;
//Declaring the column names
data.addColumn('number', 'ID');
data.addColumn('number', 'Value1');
data.addColumn('number', 'Value2');
//Filling each row. Ref:http://stackoverflow.com/a/7861051/1883256
$.each(record, function(k, v) {
//display the key and value pair
//console.log(k + ' is ' + v.id);
data.addRow([v.id,parseInt(v.value1),parseInt(v.value2)]);
});
var options = {
title: 'Data last '+ rowsnumber +' rows',
//curveType: 'function',
backgroundColor: { fill:'transparent'},
height: 500,
legend: { position: 'bottom' },
};
var chart = new google.visualization.LineChart(document.getElementById('linechart'));
chart.draw(data, options);
}
</script>
{{-- end of Google charts--}}
@endsection
Это не работает, потому что получается, что разбивать на страницы вставляет HTML код для постраничной ссылок, так как я получаю следующее сообщение об ошибке:
Uncaught SyntaxError: Unexpected token <
И это потому, что $data
выходы:
var record = <ul class="pagination">
... и так далее ... вместо коллекции Eloquent. Он фактически выводит LengthAwarePaginator
.
Тогда как я могу получить доступ к данным ($row->id
, $row->value1
, $row->value2
) прямо в яваскрипта разделе?
С другой стороны, это будет работать, если я получаю данные через другой переменной запроса:
$datachart = Mymodel::orderBy('id','desc')->take(30)->get();
, который фактически представляет собой сборник. Другими словами, это работает:
var record = {!!$datachart!!};
Но что я действительно хочу, чтобы картировать данные вместе с нумерацией страниц, так что на каждой странице я может выводить соответствующие значения в Linechart.
Любые идеи о том, как получить доступ к данным коллекции в javascript прямо из LengthAwarePaginator?
Обход: Я получаю другую коллекцию с тем же запросом, но без разбивки на страницы и теперь она работает.
Приятная попытка ... но я получаю следующую ошибку: 'Undefined property: Illuminate \ Pagination \ LengthAwarePaginator :: $ data' – Pathros
сделать' dd ($ data) 'из вашего контроллера. И показать результат здесь. Пожалуйста. А также помните, что у вторых 'data' нет' '' впереди. – EddyTheDove