Estoy tratando de poder obtener información, (con el fin de brindar una Api), en el cual la obtengo usando odbc_fetch_object
, pero no logro realizar una petición GET
y me devuelva la información que necesito.
Los datos se consultan y se procesan en un Controller
.
La base de datos donde se consulta es una tabla .dbf
, utilizo VisualFoxProDriver
para lograr la conexión.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Queries\ApiSQL;
class ApiController extends Controller
{
public function indexPersonal()
{
$ODBCdriver = $this->ODBCdriver;
$ODBCuser = $this->ODBCuser;
$ODBCpwd = $this->ODBCpwd;
$query = new ApiSQL;
$conID = odbc_pconnect($ODBCdriver, $ODBCuser, $ODBCpwd);
define('personal', @odbc_exec($conID, $query->queryPersonal()));
$jsonData = array();
while ($array = odbc_fetch_object(personal)) {
$jsonData[] = $array;
}
dd($jsonData);
return response()->json($jsonData, 200);
}
}
Esta es la información que obtengo de dd($jsonData);
:
Pero cuando quiero obtener los datos sin hacer dd($jsonData);
Laravel me devuelve el siguente error (en el navegador ):
InvalidArgumentException
Malformed UTF-8 characters, possibly incorrectly encoded
Si el Controller
lo utilizo de la siguente manera, puedo obtener los datos correctamente, pero no me convence para nada porque tengo que escribir una linea por cada columna.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Queries\ApiSQL;
class ApiController extends Controller
{
public function indexPersonal()
{
$ODBCdriver = $this->ODBCdriver;
$ODBCuser = $this->ODBCuser;
$ODBCpwd = $this->ODBCpwd;
$query = new ApiSQL;
$conID = odbc_pconnect($ODBCdriver, $ODBCuser, $ODBCpwd);
define('personal', @odbc_exec($conID, $query->queryPersonal()));
while ($row = odbc_fetch_array(personal)) {
$data[$row['id']] = array(
'pers_codi' => utf8_encode($row['id']),
'pers_lega' => utf8_encode($row['legajo']),
'pers_nomb' => utf8_encode($row['name']),
'pers_domi' => utf8_encode($row['domicilio']),
'pers_loca' => utf8_encode($row['localidad']),
);
};
return response()->json($data, 200);
}
}
Este es el resueltado que obtengo en Postman
del código
Me gustaria poder utilizar la primera opción, pero no puedo dar en la tecla. Si tienen alguna pista, les agradecería.