es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El valor de Laravel DI está vacío.

Este funciona:

public function show($id)
{
$request = ClientRequest::find($id);
return view('show', compact('request'));
}

Este no funciona!!
dd($request) indica atributos nulos

public function show(ClientRequest $request)
{
return view('show', compact('request'));
}

Esta es mi ruta

Auth::routes();</p>

<p>Route::resource('pioneer', RequestController::class);

Modelo

class ClientRequest extends Model
{
use HasFactory;
protected $guarded = [];
}

¿Alguien sabe dónde está el problema? He buscado en Google, pero todavía no puedo averiguarlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema probablemente esté en el parámetro de ruta. En el primer bloque de código, el parámetro para el método “show” es $id, lo cual funciona bien con el método “find()” para recuperar el objeto de solicitud de cliente correspondiente de la base de datos.

    Sin embargo, en el segundo bloque de código, el parámetro se establece como una instancia de la clase ClientRequest. Esto puede causar problemas con el sistema de enrutamiento de Laravel, ya que espera que el parámetro sea un valor simple y no un objeto.

    Para solucionar esto, puede volver a utilizar $id como parámetro, o modificar su ruta para utilizar un parámetro de URL diferente, como ID:

    Route::resource('pioneer', RequestController::class)->parameters(['pioneer' => 'id']);

    Luego, en el método show() de RequestController, puede recuperar el objeto ClientRequest solicitado utilizando el nuevo parámetro de ID:

    “` public function show($id)
    {
    $request = ClientRequest::find($id);
    return view(‘show’, compact(‘request’));
    }


    Alternativamente, puede utilizar el enlace de modelo de ruta en su método de controlador para recuperar automáticamente el objeto ClientRequest según el parámetro de URL. Para hacer esto, deberá modificar su ruta para utilizar el ID de ClientRequest como parámetro, de la siguiente manera: ```Route::resource('pioneer', RequestController::class)->parameters(['pioneer' => 'client_request']);``` Luego, en su método show(), puede indicar el parámetro ClientRequest y Laravel recuperará automáticamente el registro correspondiente de la base de datos: ``` public function show(ClientRequest $client_request) { return view('show', compact('client_request')); }

    Asegúrese de que su modelo (ClientRequest) utilice el nombre correcto de la columna de clave primaria (normalmente “id”) y de que el nombre del parámetro en la ruta coincida con el nombre de la clase de modelo que está intentando recuperar (en este caso, “client_request”).

    ¡Espero que esto ayude!

Comments are closed.