php - Cómo recuperar datos según la condición de identificación en Laravel

CorePress2024-05-09  3

How to fetch data based on id condition in Laravel

Estoy tratando de obtener datos basados ​​en case_id que es de la tabla de casos y busco (case_id) en mi tabla de sockets pero obtengo una matriz vacía en mi respuesta:

Aquí está mi controlador:

public function index($case_id)
    {
        $id = kase::find($case_id);

        $data = DB::table('sockets')->where('case_id',$id)->get();
        return $data;
    }

Mi ruta:

 Route::get('/case-log/{id}', 'CaseLogController@index');

¿En qué me estoy equivocando?



-----------------------------------

Obtienes un valor nulo para kase::find($case_id) porque laravel asume que la clave principal y el índice se denomina 'id'. Para anular esta configuración en su modelo Kase, configúrela de la siguiente manera. También puedes construir tu relación con tu modelo de socket de la siguiente manera:

class kase extends Model
{
    ...
    protected $primaryKey = 'case_id';
    ...
    
    
    public function sockets()
    {
        return $this->hasMany(socket::class, 'case_id');
    }
}

También necesita que los parámetros del método de su controlador coincidan con los parámetros de su ruta. Entonces:

public function index($id)
{
    $case = kase::with('sockets')->find($id);
   
    return $case->sockets;
}



-----------------------------------

El nombre del slug en tu ruta debe coincidir con el nombre del parámetro en tu método de índice, por lo que debes cambiar uno de estos

Route::get('/case-log/{case_id}', 'CaseLogController@index');

y

public function index($case_id)
{
    $id = kase::find($case_id);

    $data = DB::table('sockets')->where('case_id',$id)->get();
    return $data;
}


-----------------------------------

Your guide to a better future - quark24
Your guide to a better future - quark24