A ver... si las claves foráneas en Laravel tienen tipos que son distintos puedes especificar el índice de una manera aparte, tal como se hacía antiguamente, antes que apareciera el método foreignId, ya que foreignId()
, por defecto crea una columna BIGINT
. Si en tu tabla customers
el id
es de tipo INT
, deberías crear la clave foránea manualmente si quieres que tenga un índice e integridad referencial.
Puedes hacerlo de la siguiente manera:
$table->unsignedInteger('customer_id')->nullable();
$table->foreign('customer_id')->references('id')->on('customers');
En este ejemplo has indicado el tipo del campo en la relación, unsignedInteger('customer_id')
, que crea una columna planning_id
de tipo INT UNSIGNED
. Mira a ver si no es unsigned el id, en cuyo caso simplemente crearlo como Integer('customer_id')
.
Ahora al crear el índice no te debería dar problemas, si es que ese es el problema que estaba ocurriendo en tu caso.
Ya para hacer el down de la migración y que se haga el rollback tienes que hacer de nuevo los dos pasos. Primero borras el índice y luego el campo. Sería más o menos así:
$table->dropForeign(['customer_id']);
$table->dropColumn('customer_id');
Por supuesto, todo esto contando con que las convenciones de nombrado de campos y tablas de Laravel las estés cubriendo, porque si no las sigues las sentencias serían un poco más complejas.