синтаксическая ошибка, неожиданный 'foreach' (T_FOREACH) в laravel - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь получить данные в гистограмму из БД, но выдает ошибку выше,

код контроллера:

   public function chart($id)
   {
    $data = File::findOrFail($id);
    $result = \DB::table('importpdfs')
                ->where('Battery','=','Verbal')
                ->orderBy('SAS', 'ASC')
                ->get();
    @foreach ($pdfdata => $data)
      {{ $data->SAS }}
    @endforeach
    return response()->json($result);
  }

bladefile:

     <div class="container">
          <canvas id="myChart"></canvas>
        </div>
        @push('scripts')
        <script 
src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
      @endpush
      <script>
        var url = "{{url('importpdfs')}}";
          var Bat = new Array();
          var Sas = new Array();
            //$(document).ready(function(){
              //$.get(url, function(response){
                //response.forEach(function(data){
                  //Bat.push(data.Battery);
                  //Sas.push(data.SAS);
            //});
        let myChart = document.getElementById('myChart').getContext('2d');

          // Global Options
          Chart.defaults.global.defaultFontFamily = 'Lato';
          Chart.defaults.global.defaultFontSize = 18;
          Chart.defaults.global.defaultFontColor = '#777';

          let massPopChart = new Chart(myChart, {
            type:'bar', // bar, horizontalBar, pie, line, doughnut, radar, 
          polarArea
        data:{
          labels:['Verbal', 'Quantitative', 'Non-Verbal', 'Spatial'],
            datasets:[{
              label:'SAS',
                data:[
                  120,
                  112,
                  121,
                  111,
                  110,
                ],
          //backgroundColor:'green',
          backgroundColor:[
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
            'rgba(54, 162, 235, 0.6)',
          ],
          borderWidth:1,
          borderColor:'#777',
          hoverBorderWidth:1,
          hoverBorderColor:'#000'
        }]
      },
      options:{
        title:{
          display:true,
          text:'Bar Chart',
          fontSize:25
        },
        legend:{
          display:true,
          position:'right',
          labels:{
            fontColor:'#000'
          }
        },
        layout:{
          padding:{
            left:10,
            right:0,
            bottom:0,
            top:0
                }
              },
              tooltips:{
                enabled:true
              }
            }
          });
        </script>

как это решить?

1 Ответ

0 голосов
/ 17 июня 2019

Почему вы пытаетесь вставить blade-PHP в контроллер? Это должен быть строго стандартный PHP.

Позвольте внешнему интерфейсу обрабатывать данные (хотя это сложнее реализовать, это будет означать, что сервер обрабатывает операции меньше). Я бы посоветовал вам снять foreach в контроллере и передать $result обратно на передний конец и обработать foreach там.

...