Rumah > Soal Jawab > teks badan
Saya mempunyai dua jadual pangkalan data ini:
Jadual pengguna akan mengendalikan maklumat sedemikian
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(); });
Dan Jadual Rakan Kongsi akan mengandungi semua maklumat meta pengguna seperti nama pertama dan nama keluarga dll.
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(); });
Apabila pengguna mendaftar ke laman web, saya hanya memerlukan beberapa medan, iaitu 用户名
、电子邮件地址
、密码
、名字
和 姓氏
. Ini adalah medan yang diperlukan sahaja.
Oleh itu, maklumat dalam jadual rakan kongsi boleh diisi selepas pengguna melengkapkan pendaftaran laman web.
Tetapi disebabkan struktur kunci asing, saya tidak dapat meneruskan kerana ralat ini:
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, admin@example.com, 2016-06-09 19:41:18, 2016-06-09 19:41:18))
Saya tahu ini disebabkan oleh jadual negara yang diperlukan oleh jadual rakan kongsi.
Soalan saya ialah: Adakah terdapat penyelesaian supaya saya boleh mengisi jadual rakan kongsi dengan negara atau mana-mana data lain yang tidak diperlukan, tetapi mengekalkan skema jadual luaran untuk negara, negeri, dsb.
P粉1357999492023-10-18 13:21:13
Untuk laravel 7.x mencipta kunci asing boleh nullable, hanya gunakan:
$table->foreignId('country_id')->nullable()->constrained(); $table->foreignId('state_id')->nullable()->constrained();
Ingat: nullabilityhendaklah sebelum dikekang, jika tidak batal tidak akan terjejas.
P粉6383439952023-10-18 09:30:39
Tetapkan country_id
和 state_id
kepada nullable seperti yang ditunjukkan di bawah.
$table->integer('country_id')->nullable()->unsigned(); $table->integer('state_id')->nullable()->unsigned();