Laravel Store JSON

In MySQL ist es möglich JSON-Daten in eine Datenbank-Feld zu speichern. Die Daten können dann z.B. in einer Where-Abfrage verwendet werden.  

Hier ein kurzer Test mit einer Datenbank mit einer JSON-Spalte:

Migration 

für den Test:

        Schema::create('json', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->json('data');
            $table->timestamps();
        });
   

Insert:

 \DB::table("json")->insert(['data' => '{"heating":"22","testkey":"testvalue"}'])

Read: where query:

\DB::table("json")->where('data->heating','22')->get()

Update:

\DB::table("json")->where('data->heating','22')->update(['data->heating' => '23'])

Model UpdateOrCreate

					json::updateOrCreate([
							'type' => 'weather_day',  
						 	'scope' => $day],[
							'data' => json_encode(array(
								'count_R' => $count_r,
								'sum_H_min' => $count_h,
								'sum_W_min' => $count_w,
								'sum_U_min' => $count_u,
								'sum_S_min' => $count_s,
								'sum_0_min' => $count_0
							))
					]
					);

Foreach

Lesen der Einträge in einer foreach, als Alternative zum Key-Value-Beispiel: Laravel Key Value Datenbank  

		$heating_days =	json::where('type','heating_day')->orderBy('scope', 'DESC')->get();
		foreach ($heating_days as $day => $heating_day) {
			$heating_day_data = json_decode($heating_day->data);
			$PowerStats4ViewDay[ $day ]['R']=$heating_day_data->count_R ?? 0  ;
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


veröffentlicht am 26.01.2020 von Bernhard
geändert am 28.03.2020 von Bernhard



Fragen / Kommentare


Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter. Details anzeigen.