Maison > Questions et réponses > le corps du texte
Afficher les données de type json dans la lame J'ai une table dans ma base de données qui stocke les données et l'une des données est de type json et tout se passe bien mais quand je veux afficher ces json dans blade, le problème commence C'est mon type de données json [![Entrez la description de l'image ici][1]][1]
Dans ma lame, j'utilise php pour interroger, extraire et afficher toutes les données avec le même identifiant de commande, mais je souhaite afficher les données json en faisant cela
<div class="modal-body"> <?php $order[] = $ord_com->id; $tareasco = DB::table('tareas')->whereIn('orden_compra_id',$order)->orderBy('created_at','desc')->get(); ?> @foreach($tareasco as $audi) {{ $audi->componente_id }}<!--here it shows me everything ok--> @if (is_array($audi->componente_id) || is_object($audi->componente_id)) @foreach ($audi->componente_id as $documen) <h1>{{$documen['partidas_id']}}</h1> @endforeach @endif @endforeach </div>
Aucune donnée n'est affichée dans le deuxième foreach où je souhaite afficher les données json
Éditeur :
Dans le deuxième foreach où je veux afficher les données json, aucune donnée ne m'est montrée, je pense que c'est parce que j'appelle mal les données, car lorsque j'effectue l'action suggérée, elle ne me montre rien
[{"id": 9913, "cantidad": "12", "costoini": "12", "partidas_id": "1", "servicios_id": "1077", "componente_id": "1", "sub_componente_id": "1", "sub_sub_componentes_id": "1"}] [{"id": 2548, "cantidad": "2", "costoini": "123", "partidas_id": "1", "servicios_id": "1077", "componente_id": "1", "sub_componente_id": "1", "sub_sub_componentes_id": "1"}, {"id": 7555, "cantidad": "4", "costoini": "124", "partidas_id": "2", "servicios_id": "1078", "componente_id": "1", "sub_componente_id": "1", "sub_sub_componentes_id": "1"}]
P粉9365096352024-03-23 11:15:34
Vous devez utiliser json_decode
将该 json 数组转换为数组数组 (json_decode($json, true)
) 或对象数组 (json_decode($json)
)
@php($tareasco = DB::table('tareas')->whereIn('orden_compra_id',$order)->orderBy('created_at','desc')->get()) @foreach($tareasco as $audi) @php($componente_id = json_decode($audi->componente_id)) @if (is_array($audi->componente_id)) @foreach ($audi->componente_id as $documen){{ $documen->partidas_id }}
@endforeach @endif @endforeach
@php($tareasco = DB::table('tareas')->whereIn('orden_compra_id',$order)->orderBy('created_at','desc')->get()) @foreach($tareasco as $audi) @php($componente_id = json_decode($audi->componente_id, true)) @if (is_array($audi->componente_id)) @foreach ($audi->componente_id as $documen){{ $documen['partidas_id'] }}
@endforeach @endif @endforeach
Une meilleure option consiste à définir le comportement dans l'attribut $cast
du modèle Eloquent.
class Tarea extends Model { protected $casts = [ 'componente_id' => 'array' ]; }
$tareasco = Tarea::whereIn(...)->orderBy(...)->get();
@foreach($tareasco as $audi) @if (is_array($audi->componente_id)) @foreach($audi->componente_id as $documen) {{ $documen['partidas_id'] }} @endforeach @endif @endforeach