Criando chaves estrangeiras por meio da migração do Laravel

Estou trabalhando em um aplicativo no Laravel 4 que requer duas tabelas userse user_profiles. A user_idcoluna in user_profilesé uma chave estrangeira para idin users. Eu estava tentando fazer isso:

$table->increments('id');
$table
->integer('user_id')->unsigned(); // this is meant to be used as a foreign key

No entanto, depois de fazer php artisan migrateisso, ocorrerá um erro:

[Exception]                                                                                                                                                                                 
SQLSTATE
[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key (SQL: create table `transactions` (`
id`
int unsigned not null auto_increment primary key, `user_id` int unsigned not null auto_increment primary key) default character set utf8 collate utf8_unicode_ci) (Bindings: array (
))

O problema com o Laravel 4 é que, para inteiros, ele tenta criar um inteiro sem sinal de comprimento (11) enquanto as chaves primárias são inteiros de comprimento (10).

Para superar esse problema, você pode usar unsignedInteger()

Isso resolverá o problema:

$table->increments('id');
$table
->unsignedInteger('user_id');
$table
->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');