Hago la clave principal como uuid en Model.
Migración con clave principal uuid:
Schema::create('brands', function (Blueprint $table) { $table->uuid('id')->unique()->primary(); $table->string('title'); $table->timestampsTz(); });Comprobación de modelo:
Psy Shell >>> $x = App\Models\Brand::find('e025b8aa-c71e-42ca-b87c-7ee27695b83a'); => App\Models\Brand {#720 id: "e025b8aa-c71e-42ca-b87c-7ee27695b83a", title: "Batman", created_at: "2017-04-28 23:51:41+10", updated_at: "2017-04-28 23:51:41+10", }Al acceder al modelo, este contiene los datos correctos.
>>> $x->title => "Batman" >>> $x->id => 0¿Por qué cero?
Eloquent tiene algunas convenciones predeterminadas y, por lo tanto, tiene algunas expectativas en su modelo, tabla, restricciones, etc. Afortunadamente, puede cambiarlas:
De la documentación de Laravel :
Claves primarias
Eloquent también asumirá que cada tabla tiene una columna de clave principal llamada id. Puede definir una propiedad $primaryKey para anular esta convención.
Además, Eloquent asume que la clave principal es un valor entero incremental, lo que significa que, de forma predeterminada, la clave principal se convertirá en un int automáticamente. Si desea utilizar una clave principal no incremental o no numérica, debe establecer la propiedad pública $incremental en su modelo en falso.
Con respecto a su pregunta: "¿Por qué cero?"
Debido a que Eloquent convierte la cadena de "e025b8aa-c71e-42ca-b87c-7ee27695b83a" explícitamente en un valor int y ese resultado es int 0 ...