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;
}
-----------------------------------