J'ai ces deux tables de base de données:
ser Tables traitera ce type d'informations
Schema::create('users', function (Blueprint $table) {
$table->increments('id')->unique();
$table->string('email')->unique();
$table->string('username')->unique();
$table->string('password', 60);
$table->string('photo')->nullable();
$table->integer('partner_id')->unsigned();
$table->foreign('partner_id')->references('id')->on('partners');
$table->rememberToken();
$table->timestamps();
});
Alors que Tables partenaires contient toutes les méta-informations utilisateur telles que le prénom et le nom, etc.
Schema::create('partners', function (Blueprint $table) {
/**
* Identity Columns
*/
$table->increments('id')->unique();
$table->string('first_name');
$table->string('middle_name')->nullable();
$table->string('last_name')->nullable();
$table->string('display_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('website')->nullable();
$table->string('phone')->nullable();
$table->string('mobile')->nullable();
$table->string('fax')->nullable();
$table->date('birthdate')->nullable();
$table->longText('bio')->nullable();
$table->string('lang')->nullable(); //Language
/**
* Address Columns
*/
$table->text('street')->nullable();
$table->text('street2')->nullable();
$table->integer('country_id')->unsigned(); // foreign
$table->foreign('country_id')->references('id')->on('countries');
$table->integer('state_id')->unsigned(); // foreign
$table->foreign('state_id')->references('id')->on('country_states');
$table->string('city')->nullable();
$table->string('district')->nullable();
$table->string('area')->nullable();
$table->string('Zip')->nullable();
});
Lorsqu'un utilisateur est inscrit sur le site, je veux seulement quelques champs qui sont, username
, email address
, password
, first name
et last name
. Ce ne sont que les champs obligatoires.
Ainsi, les informations dans les tableaux des partenaires peuvent être remplies plus tard après que l'utilisateur a fini de s'inscrire sur le site.
Mais en raison de la structure de la clé étrangère, je ne peux plus continuer à cause de cette erreur:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mytable`.`tbl_partners`, CONSTRAINT `partners_country_id_foreign` FOREIGN KEY (`country_id`) REFERENCES `tbl_countries` (`id`)) (SQL: insert into `tbl_partners` (`first_name`, `last_name`, `display_name`, `email`, `updated_at`, `created_at`) values (Jack, Wilson, admin, [email protected], 2016-06-09 19:41:18, 2016-06-09 19:41:18))
Je sais que cela est dû à la table des pays qui est requise par la table des partenaires.
.
Met le country_id
et le state_id
nullable, comme ça.
$table->integer('country_id')->nullable()->unsigned();
$table->integer('state_id')->nullable()->unsigned();