Tengo una tabla en Postgres que genera automáticamente UUID, cuando agrego Customer::all(); en Laravel obtengo una matriz con "cs_id" => "d0402be5-e1ba-4cb2-a80c-5340b406e2c3" que está bien. Cuando hago un bucle o selecciono un registro con solo el cs_id, los datos devuelven 0,2,5 para los tres registros actualmente en la tabla, que son datos incorrectos.
EDITAR:
CREATE TABLE customers ( cs_id character varying(255) NOT NULL DEFAULT gen_random_uuid(), CONSTRAINT cs_customers_pkey PRIMARY KEY (cs_id), }en laravel
$customerData = Customer::where('cs_id','d0402be5-e1ba-4cb2-a80c-5340b406e2c3')->first(); dd($customerData['cs_id']);Por alguna razón, Eloquent se equivoca allí.
simplemente agregue un getter y utilícelo cuando necesite el cs_id
public function getGuid() { return $this->attributes['cs_id']; }Para usar uuid generados automáticamente por la base de datos, defina su modelo de la siguiente manera:
class Customer extends Model { // rename the id column (optional) protected $primaryKey = 'cs_id'; // tell Eloquent that your id is not an integer protected $keyType = 'string'; // do NOT set $incrementing to false }Luego, puede usar todos los métodos de Eloquent como lo haría con las identificaciones clásicas:
$customerData = Customer::findOrFail('d0402be5-e1ba-4cb2-a80c-5340b406e2c3');Usar Customer::findOrFail('d0402be5-e1ba-4cb2-a80c-5340b406e2c3');
para obtener el registro que coincida con ese pk.
Supongo que además tienes que use App\Customer;