Ho una tabella mysql in cui sto usando un UUID come chiave primaria. Ecco la migrazione creazione:La chiave primaria UUID nel modello Eloquent è memorizzata come uuid ma restituisce come 0
Schema::create('people', function (Blueprint $table) {
$table->uuid('id');
$table->primary('id');
...
$table->timestamps();
}
che genera il seguente schema di MySQL:
CREATE TABLE `people` (
`id` char(36) COLLATE utf8_unicode_ci NOT NULL,
...
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Nel mio modello Eloquente Ho un metodo per la creazione di un'istanza che richiede un metodo per generare l'UUID:
class Person extends Model
{
protected $fillable = [
...
];
public function make(array $personData){
$person = new Person;
$person->setUUID();
collect($personData)->each(function ($value, $columnName) use($person){
if(in_array($columnName, $this->fillable)){
$person->{$columnName} = $value;
}
});
$person->save();
return $person;
}
protected function setUUID(){
$this->id = preg_replace('/\./', '', uniqid('bpm', true));
}
}
Quando creo una nuova istanza di modello, la memorizza nel database:
Ma quando provo ad accedere al nuovo id dell'istanza:
Restituisce come 0:
Che cosa mi manca qui?