Tôi đã các bảng hai cơ sở dữ liệu:Laravel Database Schema, Nullable Ngoại
- Bàn tài
- Partner Bàn
tài Bàn sẽ xử lý các loại thông tin
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();
});
Trong khi Tab đối tác es sẽ chứa tất cả các thông tin người dùng meta như tên đầu tiên và tên cuối cùng vv
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();
});
Khi một người dùng được đăng ký vào trang web tôi chỉ muốn vài lĩnh vực mà, username
, email address
, password
, first name
và last name
. Đây chỉ là các trường bắt buộc.
Vì vậy, thông tin trong bảng đối tác có thể được điền sau này sau khi người dùng hoàn tất đăng ký trang web.
Nhưng do cấu trúc của chính nước ngoài, tôi không thể tiến hành thêm bất kỳ vì lỗi này:
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))
Tôi biết điều này là nguyên nhân gây ra bởi bảng các nước được yêu cầu của bảng đối tác.
Câu hỏi của tôi là: là có một công việc xung quanh vì vậy tôi có thể điền vào các quốc gia hoặc bất kỳ dữ liệu không cần thiết khác trên bàn đối tác nhưng giữ schema bảng nước ngoài cho các nước, khẳng định vv
Nếu bạn cần phải thay đổi nullable lĩnh vực sau khi tạo lược đồ, sau đó dòng nên $ Bảng-> số nguyên ('country_id') -> nullable() -> unsigned() -> thay đổi (); – sh6210