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.
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’));
}
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!