Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

272
Vistas
Accede a datos json con Laravel e Inertia

Tengo un formulario simple con 1 campo de entrada y un botón de envío.

Todo lo que hace es obtener la entrada del usuario, compararla con una API externa y enviar ambos registros a la base de datos.

La respuesta de la API externa es formato JSON, como este, pero solo quiero recuperar el campo de text en las choices

 { "id": "123", "object": "tc", "created": 1655642237, "model": "text-code", "choices": [ { "text": "paragraph text here", "index": 0, "logprobs": null, "finish_reason": "length" } ] }

Esto se almacena en una variable $complete , por lo que cuando accedo a ella en la vista, obtengo todo esto sin forma de apuntar solo a elementos específicos.

este es mi controlador

 public function index() { $prompts = Writer::all(); return Inertia::render('Writer', [ 'prompts' => $prompts ]); } public function store(Request $request) { $complete = $start->complete([ 'engine' => '002', 'prompt' => $request->input('inputText') ]); $data = json_decode($complete, true); Validator::make($request->all(), [ 'inputText' => 'required|min:5|max:255|string', ])->validate(); Writer::create([ 'request' => $request->input('inputText'), 'response' => $data['choices'] ]); return redirect()->back()->with('message', 'success.'); }

Tengo que pasar $complete al método create() porque pasar $data da un error

Conversión de matriz a cadena

y

El objeto de la clase stdClass no se pudo convertir en una cadena

Sin embargo, si return $data['choices'] justo después de la variable, obtengo los campos que solo están en choices

La vista es bastante simple.

 <div class="card w-100 bg-light mt-4 mb-4" v-for="prompt in $page.props.prompts"> <div class="card-body"> <h5 class="card-title">{{ prompt.request }}</h5> <p class="card-text">{{ prompt.response }}</p> </div> </div>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para acceder a los datos en $choices -array (es una matriz, no una cadena, y es por eso que obtuvo un error en consecuencia), cambie las líneas correspondientes en su store -método a

 Writer::create([ 'request' => $request->input('inputText'), 'response' => $data['choices'][0]['text'] ]);

Pero tenga en cuenta que $data[ 'choices' ] podría estar vacío, por lo que antes de almacenar cualquier valor, asegúrese de verificar su existencia y proporcione un valor predeterminado, por ejemplo

 $text = $data['choices'][0]['text'] ?? 'my-default-value';
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda