LoginSignup

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

LaravelでChart.jsのlabelsに変数を渡したい。

解決したいこと

LaravelでChart.jsのlabelsに変数を渡したいです。

Laravelで体重記録アプリを作っています。
Mysqlからデータを取得し、横軸に記録した日付、縦軸に体重を設定したいです。
今回の質問内容は横軸のみ。

Mysqlから記録したデータ(日付)を取得(Chart.php)

    //横軸の日数を取得
    public function r_day(){

        $record_dates = Record::select('date')
                       ->where('user_id','=', \Auth::user()->id )
                       ->whereNull('deleted_at')->get();

        $record_day = [];

        foreach($record_dates as $record){

            $record_day[] = $record['date'];

        }

        return $record_day;
    }


HomeController

        $shaft = new Chart;
        $record_day = $shaft->r_day();

        dd($record_day);

        return view('index',compact('record_day'))

//出力結果
array:2 [▼
  0 => "2022-03-18"
  1 => "2022-04-27"
]

グラフの表示

<script>
      window.onload = function () {
        let context = document.querySelector("#your_weight_chart").getContext('2d')
        new Chart(context, {
          type: 'line',
          data: {
              
            labels:  {{$record_day}} , ⇦ここがうまくいかない
            datasets: [{
              label: "体重の変化",
              data: [100,90,80,],
              borderColor: '#ff6347',
              backgroundColor: '#ff6347',
            }],

          },
          options: {
            responsive: false,
          }
        })
      }
    </script>

エラー内容

TypeError
htmlspecialchars(): Argument #1 ($string) must be of type string, array given (View: /var/www/diet-app/resources/views/index.blade.php)

エラー内容は、配列ではなく、文字列型を指定しないといけないという意味だと思いますので、そもそも配列を渡すことができないという意味なのでしょうか。

配列を渡すことができる方法がございましたら、ご教示いただけますと幸いです。

0

1Answer

Comments

  1. @m1527092

    Questioner
    ご回答ありがとうございます。

    JSONのレンダリングの項目で
    <script>
    var app = <?php echo json_encode($array); ?>;
    </script>

    を参考に、
    var day = <?php echo json_encode($record_day); ?>;
    として、
    labels: day,
    としたら、目的の動作をすることができました!

    同様に縦軸も作成し、一気に配列を使った折れ線グラフを作成することができました。

    公式ドキュメントの大切さを改めて実感しました!

    この度は、アドバイスいただきありがとうございました!!!

Your answer might help someone💌